home *** CD-ROM | disk | FTP | other *** search
/ Programming a Multiplayer FPS in DirectX / Programming a Multiplayer FPS in DirectX (Companion CD).iso / DirectX / dxsdk_oct2004.exe / dxsdk.exe / Utilities / MView / gxu / adjoutline.cod next >
Encoding:
Text File  |  2004-09-30  |  141.2 KB  |  4,625 lines

  1. ; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4035 
  2.  
  3.     TITLE    .\adjoutline.cpp
  4.     .386P
  5. include listing.inc
  6. if @Version gt 510
  7. .model FLAT
  8. else
  9. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  10. _TEXT    ENDS
  11. _DATA    SEGMENT DWORD USE32 PUBLIC 'DATA'
  12. _DATA    ENDS
  13. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  14. CONST    ENDS
  15. _BSS    SEGMENT DWORD USE32 PUBLIC 'BSS'
  16. _BSS    ENDS
  17. $$SYMBOLS    SEGMENT BYTE USE32 'DEBSYM'
  18. $$SYMBOLS    ENDS
  19. _TLS    SEGMENT DWORD USE32 PUBLIC 'TLS'
  20. _TLS    ENDS
  21. ;    COMDAT ??_C@_04IHCGOIEL@mWd1?$AA@
  22. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  23. CONST    ENDS
  24. ;    COMDAT ??_C@_04KMALLLII@mWd2?$AA@
  25. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  26. CONST    ENDS
  27. ;    COMDAT ??_C@_04LFBAIKMJ@mWd3?$AA@
  28. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  29. CONST    ENDS
  30. ;    COMDAT ??_C@_04PKFBBMAO@mWd4?$AA@
  31. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  32. CONST    ENDS
  33. ;    COMDAT ??_C@_04ODEKCNEP@mWd5?$AA@
  34. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  35. CONST    ENDS
  36. ;    COMDAT ??_C@_04MIGHHOIM@mWd6?$AA@
  37. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  38. CONST    ENDS
  39. ;    COMDAT ??_C@_04NBHMEPMN@mWd7?$AA@
  40. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  41. CONST    ENDS
  42. ;    COMDAT ??_C@_04FGOEFDAC@mWd8?$AA@
  43. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  44. CONST    ENDS
  45. ;    COMDAT ??_C@_04EPPPGCED@mWd9?$AA@
  46. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  47. CONST    ENDS
  48. ;    COMDAT ??_C@_05DOMPIIAD@mWd10?$AA@
  49. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  50. CONST    ENDS
  51. ;    COMDAT ??_C@_05CHNELJEC@mWd11?$AA@
  52. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  53. CONST    ENDS
  54. ;    COMDAT ??_C@_05MPJOKIB@mWd12?$AA@
  55. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  56. CONST    ENDS
  57. ;    COMDAT ??_C@_05BFOCNLMA@mWd13?$AA@
  58. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  59. CONST    ENDS
  60. ;    COMDAT ??_C@_05FKKDENAH@mWd14?$AA@
  61. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  62. CONST    ENDS
  63. ;    COMDAT ??_C@_05EDLIHMEG@mWd15?$AA@
  64. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  65. CONST    ENDS
  66. ;    COMDAT ??_C@_05GIJFCPIF@mWd16?$AA@
  67. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  68. CONST    ENDS
  69. ;    COMDAT ??_C@_05HBIOBOME@mWd17?$AA@
  70. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  71. CONST    ENDS
  72. ;    COMDAT ??_C@_05PGBGACAL@mWd18?$AA@
  73. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  74. CONST    ENDS
  75. ;    COMDAT ??_C@_05OPANDDEK@mWd19?$AA@
  76. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  77. CONST    ENDS
  78. ;    COMDAT ??_C@_05DMIJDGFK@mWd20?$AA@
  79. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  80. CONST    ENDS
  81. ;    COMDAT ??_C@_05CFJCAHBL@mWd21?$AA@
  82. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  83. CONST    ENDS
  84. ;    COMDAT ??_C@_05OLPFENI@mWd22?$AA@
  85. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  86. CONST    ENDS
  87. ;    COMDAT ??_C@_05BHKEGFJJ@mWd23?$AA@
  88. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  89. CONST    ENDS
  90. ;    COMDAT ??_C@_05FIOFPDFO@mWd24?$AA@
  91. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  92. CONST    ENDS
  93. ;    COMDAT ??_C@_05EBPOMCBP@mWd25?$AA@
  94. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  95. CONST    ENDS
  96. ;    COMDAT ??_C@_05GKNDJBNM@mWd26?$AA@
  97. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  98. CONST    ENDS
  99. ;    COMDAT ??_C@_05HDMIKAJN@mWd27?$AA@
  100. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  101. CONST    ENDS
  102. ;    COMDAT ??_C@_05PEFALMFC@mWd28?$AA@
  103. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  104. CONST    ENDS
  105. ;    COMDAT ??_C@_04BEMIBDAE@mTot?$AA@
  106. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  107. CONST    ENDS
  108. ;    COMDAT ??_C@_07HHMNENJH@mWorlds?$AA@
  109. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  110. CONST    ENDS
  111. ;    COMDAT ??_C@_04JKCKMDGO@vClr?$AA@
  112. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  113. CONST    ENDS
  114. ;    COMDAT ??0CAdjacencyOutline@@QAE@XZ
  115. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  116. _TEXT    ENDS
  117. ;    COMDAT ??1CAdjacencyOutline@@QAE@XZ
  118. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  119. _TEXT    ENDS
  120. ;    COMDAT ?AppendPoint@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIPAE2AAI@Z
  121. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  122. _TEXT    ENDS
  123. ;    COMDAT ?AppendMidpoint@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z
  124. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  125. _TEXT    ENDS
  126. ;    COMDAT ?CopyWeights@@YAXPAMK0K@Z
  127. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  128. _TEXT    ENDS
  129. ;    COMDAT ?CopyIndexedWeights@@YAXPAMK0K@Z
  130. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  131. _TEXT    ENDS
  132. ;    COMDAT ?AppendPointSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z
  133. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  134. _TEXT    ENDS
  135. ;    COMDAT ?AppendMidpointSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z
  136. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  137. _TEXT    ENDS
  138. ;    COMDAT ?AppendPointIndexSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z
  139. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  140. _TEXT    ENDS
  141. ;    COMDAT ?AppendMidpointIndexSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z
  142. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  143. _TEXT    ENDS
  144. ;    COMDAT ?Init@CAdjacencyOutline@@QAEJPAUID3DXBaseMesh@@PAK@Z
  145. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  146. _TEXT    ENDS
  147. ;    COMDAT ?Draw@CAdjacencyOutline@@QAEJPAUIDirect3DDevice9@@KPAUID3DXEffect@@1KPAUD3DXMATRIX@@K@Z
  148. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  149. _TEXT    ENDS
  150. ;    COMDAT ?CreateEmptyOutline@CAdjacencyOutline@@AAEJXZ
  151. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  152. _TEXT    ENDS
  153. ;    COMDAT ??0D3DXCOLOR@@QAE@K@Z
  154. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  155. _TEXT    ENDS
  156. ;    COMDAT ??0D3DXMATRIX@@QAE@XZ
  157. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  158. _TEXT    ENDS
  159. ;    COMDAT ?BIndexedWeights@CD3DXCrackDecl1@@QAEHXZ
  160. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  161. _TEXT    ENDS
  162. ;    COMDAT ?SetDeclaration@CD3DXCrackDecl1@@QAEJPBU_D3DVERTEXELEMENT9@@@Z
  163. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  164. _TEXT    ENDS
  165. ;    COMDAT ??0CD3DXCrackDecl1@@QAE@XZ
  166. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  167. _TEXT    ENDS
  168. ;    COMDAT ?PxyzwGetTexCoord@DXCrackFVF@@QAEPAUD3DXVECTOR4@@PAXI@Z
  169. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  170. _TEXT    ENDS
  171. ;    COMDAT ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z
  172. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  173. _TEXT    ENDS
  174. ;    COMDAT ?PfGetWeights@CD3DXCrackDecl1@@QAEPAMPAE@Z
  175. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  176. _TEXT    ENDS
  177. ;    COMDAT ?PfGetWeights@DXCrackFVF@@QAEPAMPAX@Z
  178. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  179. _TEXT    ENDS
  180. ;    COMDAT ?CWeights@DXCrackFVF@@QAEKXZ
  181. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  182. _TEXT    ENDS
  183. ;    COMDAT ?PvGetPosition@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z
  184. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  185. _TEXT    ENDS
  186. ;    COMDAT ?SetPosition@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z
  187. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  188. _TEXT    ENDS
  189. ;    COMDAT ??0D3DXVECTOR3@@QAE@MMM@Z
  190. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  191. _TEXT    ENDS
  192. ;    COMDAT ?GetArrayElem@DXCrackFVF@@QAEPAEPAXK@Z
  193. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  194. _TEXT    ENDS
  195. ;    COMDAT ?GetArrayElem@CD3DXCrackDecl1@@QAEPAEPAEI@Z
  196. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  197. _TEXT    ENDS
  198. ;    COMDAT ?CWeights@CD3DXCrackDecl1@@QAEHXZ
  199. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  200. _TEXT    ENDS
  201. ;    COMDAT ??0DXCrackFVF@@QAE@K@Z
  202. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  203. _TEXT    ENDS
  204. FLAT    GROUP _DATA, CONST, _BSS
  205.     ASSUME    CS: FLAT, DS: FLAT, SS: FLAT
  206. endif
  207.  
  208. INCLUDELIB LIBC
  209. INCLUDELIB OLDNAMES
  210.  
  211. PUBLIC    ??_C@_04IHCGOIEL@mWd1?$AA@            ; `string'
  212. PUBLIC    ??_C@_04KMALLLII@mWd2?$AA@            ; `string'
  213. PUBLIC    ??_C@_04LFBAIKMJ@mWd3?$AA@            ; `string'
  214. PUBLIC    ??_C@_04PKFBBMAO@mWd4?$AA@            ; `string'
  215. PUBLIC    ??_C@_04ODEKCNEP@mWd5?$AA@            ; `string'
  216. PUBLIC    ??_C@_04MIGHHOIM@mWd6?$AA@            ; `string'
  217. PUBLIC    ??_C@_04NBHMEPMN@mWd7?$AA@            ; `string'
  218. PUBLIC    ??_C@_04FGOEFDAC@mWd8?$AA@            ; `string'
  219. PUBLIC    ??_C@_04EPPPGCED@mWd9?$AA@            ; `string'
  220. PUBLIC    ??_C@_05DOMPIIAD@mWd10?$AA@            ; `string'
  221. PUBLIC    ??_C@_05CHNELJEC@mWd11?$AA@            ; `string'
  222. PUBLIC    ??_C@_05MPJOKIB@mWd12?$AA@            ; `string'
  223. PUBLIC    ??_C@_05BFOCNLMA@mWd13?$AA@            ; `string'
  224. PUBLIC    ??_C@_05FKKDENAH@mWd14?$AA@            ; `string'
  225. PUBLIC    ??_C@_05EDLIHMEG@mWd15?$AA@            ; `string'
  226. PUBLIC    ??_C@_05GIJFCPIF@mWd16?$AA@            ; `string'
  227. PUBLIC    ??_C@_05HBIOBOME@mWd17?$AA@            ; `string'
  228. PUBLIC    ??_C@_05PGBGACAL@mWd18?$AA@            ; `string'
  229. PUBLIC    ??_C@_05OPANDDEK@mWd19?$AA@            ; `string'
  230. PUBLIC    ??_C@_05DMIJDGFK@mWd20?$AA@            ; `string'
  231. PUBLIC    ??_C@_05CFJCAHBL@mWd21?$AA@            ; `string'
  232. PUBLIC    ??_C@_05OLPFENI@mWd22?$AA@            ; `string'
  233. PUBLIC    ??_C@_05BHKEGFJJ@mWd23?$AA@            ; `string'
  234. PUBLIC    ??_C@_05FIOFPDFO@mWd24?$AA@            ; `string'
  235. PUBLIC    ??_C@_05EBPOMCBP@mWd25?$AA@            ; `string'
  236. PUBLIC    ??_C@_05GKNDJBNM@mWd26?$AA@            ; `string'
  237. PUBLIC    ??_C@_05HDMIKAJN@mWd27?$AA@            ; `string'
  238. PUBLIC    ??_C@_05PEFALMFC@mWd28?$AA@            ; `string'
  239. ;    COMDAT ??_C@_04IHCGOIEL@mWd1?$AA@
  240. CONST    SEGMENT
  241. ??_C@_04IHCGOIEL@mWd1?$AA@ DB 'mWd1', 00H        ; `string'
  242. CONST    ENDS
  243. ;    COMDAT ??_C@_04KMALLLII@mWd2?$AA@
  244. CONST    SEGMENT
  245. ??_C@_04KMALLLII@mWd2?$AA@ DB 'mWd2', 00H        ; `string'
  246. CONST    ENDS
  247. ;    COMDAT ??_C@_04LFBAIKMJ@mWd3?$AA@
  248. CONST    SEGMENT
  249. ??_C@_04LFBAIKMJ@mWd3?$AA@ DB 'mWd3', 00H        ; `string'
  250. CONST    ENDS
  251. ;    COMDAT ??_C@_04PKFBBMAO@mWd4?$AA@
  252. CONST    SEGMENT
  253. ??_C@_04PKFBBMAO@mWd4?$AA@ DB 'mWd4', 00H        ; `string'
  254. CONST    ENDS
  255. ;    COMDAT ??_C@_04ODEKCNEP@mWd5?$AA@
  256. CONST    SEGMENT
  257. ??_C@_04ODEKCNEP@mWd5?$AA@ DB 'mWd5', 00H        ; `string'
  258. CONST    ENDS
  259. ;    COMDAT ??_C@_04MIGHHOIM@mWd6?$AA@
  260. CONST    SEGMENT
  261. ??_C@_04MIGHHOIM@mWd6?$AA@ DB 'mWd6', 00H        ; `string'
  262. CONST    ENDS
  263. ;    COMDAT ??_C@_04NBHMEPMN@mWd7?$AA@
  264. CONST    SEGMENT
  265. ??_C@_04NBHMEPMN@mWd7?$AA@ DB 'mWd7', 00H        ; `string'
  266. CONST    ENDS
  267. ;    COMDAT ??_C@_04FGOEFDAC@mWd8?$AA@
  268. CONST    SEGMENT
  269. ??_C@_04FGOEFDAC@mWd8?$AA@ DB 'mWd8', 00H        ; `string'
  270. CONST    ENDS
  271. ;    COMDAT ??_C@_04EPPPGCED@mWd9?$AA@
  272. CONST    SEGMENT
  273. ??_C@_04EPPPGCED@mWd9?$AA@ DB 'mWd9', 00H        ; `string'
  274. CONST    ENDS
  275. ;    COMDAT ??_C@_05DOMPIIAD@mWd10?$AA@
  276. CONST    SEGMENT
  277. ??_C@_05DOMPIIAD@mWd10?$AA@ DB 'mWd10', 00H        ; `string'
  278. CONST    ENDS
  279. ;    COMDAT ??_C@_05CHNELJEC@mWd11?$AA@
  280. CONST    SEGMENT
  281. ??_C@_05CHNELJEC@mWd11?$AA@ DB 'mWd11', 00H        ; `string'
  282. CONST    ENDS
  283. ;    COMDAT ??_C@_05MPJOKIB@mWd12?$AA@
  284. CONST    SEGMENT
  285. ??_C@_05MPJOKIB@mWd12?$AA@ DB 'mWd12', 00H        ; `string'
  286. CONST    ENDS
  287. ;    COMDAT ??_C@_05BFOCNLMA@mWd13?$AA@
  288. CONST    SEGMENT
  289. ??_C@_05BFOCNLMA@mWd13?$AA@ DB 'mWd13', 00H        ; `string'
  290. CONST    ENDS
  291. ;    COMDAT ??_C@_05FKKDENAH@mWd14?$AA@
  292. CONST    SEGMENT
  293. ??_C@_05FKKDENAH@mWd14?$AA@ DB 'mWd14', 00H        ; `string'
  294. CONST    ENDS
  295. ;    COMDAT ??_C@_05EDLIHMEG@mWd15?$AA@
  296. CONST    SEGMENT
  297. ??_C@_05EDLIHMEG@mWd15?$AA@ DB 'mWd15', 00H        ; `string'
  298. CONST    ENDS
  299. ;    COMDAT ??_C@_05GIJFCPIF@mWd16?$AA@
  300. CONST    SEGMENT
  301. ??_C@_05GIJFCPIF@mWd16?$AA@ DB 'mWd16', 00H        ; `string'
  302. CONST    ENDS
  303. ;    COMDAT ??_C@_05HBIOBOME@mWd17?$AA@
  304. CONST    SEGMENT
  305. ??_C@_05HBIOBOME@mWd17?$AA@ DB 'mWd17', 00H        ; `string'
  306. CONST    ENDS
  307. ;    COMDAT ??_C@_05PGBGACAL@mWd18?$AA@
  308. CONST    SEGMENT
  309. ??_C@_05PGBGACAL@mWd18?$AA@ DB 'mWd18', 00H        ; `string'
  310. CONST    ENDS
  311. ;    COMDAT ??_C@_05OPANDDEK@mWd19?$AA@
  312. CONST    SEGMENT
  313. ??_C@_05OPANDDEK@mWd19?$AA@ DB 'mWd19', 00H        ; `string'
  314. CONST    ENDS
  315. ;    COMDAT ??_C@_05DMIJDGFK@mWd20?$AA@
  316. CONST    SEGMENT
  317. ??_C@_05DMIJDGFK@mWd20?$AA@ DB 'mWd20', 00H        ; `string'
  318. CONST    ENDS
  319. ;    COMDAT ??_C@_05CFJCAHBL@mWd21?$AA@
  320. CONST    SEGMENT
  321. ??_C@_05CFJCAHBL@mWd21?$AA@ DB 'mWd21', 00H        ; `string'
  322. CONST    ENDS
  323. ;    COMDAT ??_C@_05OLPFENI@mWd22?$AA@
  324. CONST    SEGMENT
  325. ??_C@_05OLPFENI@mWd22?$AA@ DB 'mWd22', 00H        ; `string'
  326. CONST    ENDS
  327. ;    COMDAT ??_C@_05BHKEGFJJ@mWd23?$AA@
  328. CONST    SEGMENT
  329. ??_C@_05BHKEGFJJ@mWd23?$AA@ DB 'mWd23', 00H        ; `string'
  330. CONST    ENDS
  331. ;    COMDAT ??_C@_05FIOFPDFO@mWd24?$AA@
  332. CONST    SEGMENT
  333. ??_C@_05FIOFPDFO@mWd24?$AA@ DB 'mWd24', 00H        ; `string'
  334. CONST    ENDS
  335. ;    COMDAT ??_C@_05EBPOMCBP@mWd25?$AA@
  336. CONST    SEGMENT
  337. ??_C@_05EBPOMCBP@mWd25?$AA@ DB 'mWd25', 00H        ; `string'
  338. CONST    ENDS
  339. ;    COMDAT ??_C@_05GKNDJBNM@mWd26?$AA@
  340. CONST    SEGMENT
  341. ??_C@_05GKNDJBNM@mWd26?$AA@ DB 'mWd26', 00H        ; `string'
  342. CONST    ENDS
  343. ;    COMDAT ??_C@_05HDMIKAJN@mWd27?$AA@
  344. CONST    SEGMENT
  345. ??_C@_05HDMIKAJN@mWd27?$AA@ DB 'mWd27', 00H        ; `string'
  346. CONST    ENDS
  347. ;    COMDAT ??_C@_05PEFALMFC@mWd28?$AA@
  348. CONST    SEGMENT
  349. ??_C@_05PEFALMFC@mWd28?$AA@ DB 'mWd28', 00H        ; `string'
  350. CONST    ENDS
  351. _DATA    SEGMENT
  352. _x_rgszMatrix DD FLAT:??_C@_04IHCGOIEL@mWd1?$AA@
  353.     DD    FLAT:??_C@_04KMALLLII@mWd2?$AA@
  354.     DD    FLAT:??_C@_04LFBAIKMJ@mWd3?$AA@
  355.     DD    FLAT:??_C@_04PKFBBMAO@mWd4?$AA@
  356.     DD    FLAT:??_C@_04ODEKCNEP@mWd5?$AA@
  357.     DD    FLAT:??_C@_04MIGHHOIM@mWd6?$AA@
  358.     DD    FLAT:??_C@_04NBHMEPMN@mWd7?$AA@
  359.     DD    FLAT:??_C@_04FGOEFDAC@mWd8?$AA@
  360.     DD    FLAT:??_C@_04EPPPGCED@mWd9?$AA@
  361.     DD    FLAT:??_C@_05DOMPIIAD@mWd10?$AA@
  362.     DD    FLAT:??_C@_05CHNELJEC@mWd11?$AA@
  363.     DD    FLAT:??_C@_05MPJOKIB@mWd12?$AA@
  364.     DD    FLAT:??_C@_05BFOCNLMA@mWd13?$AA@
  365.     DD    FLAT:??_C@_05FKKDENAH@mWd14?$AA@
  366.     DD    FLAT:??_C@_05EDLIHMEG@mWd15?$AA@
  367.     DD    FLAT:??_C@_05GIJFCPIF@mWd16?$AA@
  368.     DD    FLAT:??_C@_05HBIOBOME@mWd17?$AA@
  369.     DD    FLAT:??_C@_05PGBGACAL@mWd18?$AA@
  370.     DD    FLAT:??_C@_05OPANDDEK@mWd19?$AA@
  371.     DD    FLAT:??_C@_05DMIJDGFK@mWd20?$AA@
  372.     DD    FLAT:??_C@_05CFJCAHBL@mWd21?$AA@
  373.     DD    FLAT:??_C@_05OLPFENI@mWd22?$AA@
  374.     DD    FLAT:??_C@_05BHKEGFJJ@mWd23?$AA@
  375.     DD    FLAT:??_C@_05FIOFPDFO@mWd24?$AA@
  376.     DD    FLAT:??_C@_05EBPOMCBP@mWd25?$AA@
  377.     DD    FLAT:??_C@_05GKNDJBNM@mWd26?$AA@
  378.     DD    FLAT:??_C@_05HDMIKAJN@mWd27?$AA@
  379.     DD    FLAT:??_C@_05PEFALMFC@mWd28?$AA@
  380. _DATA    ENDS
  381. CONST    SEGMENT
  382. _x_rgdwTexCoordSize DD 08H
  383.     DD    0cH
  384.     DD    010H
  385.     DD    04H
  386. CONST    ENDS
  387. PUBLIC    ??1CAdjacencyOutline@@QAE@XZ            ; CAdjacencyOutline::~CAdjacencyOutline
  388. EXTRN    ??3@YAXPAX@Z:NEAR                ; operator delete
  389. ; Function compile flags: /Ogs
  390. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\adjoutline.cpp
  391. ;    COMDAT ??1CAdjacencyOutline@@QAE@XZ
  392. _TEXT    SEGMENT
  393. ??1CAdjacencyOutline@@QAE@XZ PROC NEAR            ; CAdjacencyOutline::~CAdjacencyOutline, COMDAT
  394. ; _this$ = ecx
  395.  
  396. ; 46   : }
  397.  
  398.   00000    8b ff         npad     2
  399.   00002    56         push     esi
  400.  
  401. ; 41   : {
  402.  
  403.   00003    8b f1         mov     esi, ecx
  404.  
  405. ; 42   :     delete m_rgaeAttributeTable;
  406.  
  407.   00005    ff 76 54     push     DWORD PTR [esi+84]
  408.   00008    e8 00 00 00 00     call     ??3@YAXPAX@Z        ; operator delete
  409.  
  410. ; 43   : 
  411. ; 44   :     GXRELEASE(m_pVertexBuffer);
  412.  
  413.   0000d    8b 46 4c     mov     eax, DWORD PTR [esi+76]
  414.   00010    85 c0         test     eax, eax
  415.   00012    59         pop     ecx
  416.   00013    74 0a         je     SHORT $L56375
  417.   00015    8b 08         mov     ecx, DWORD PTR [eax]
  418.   00017    50         push     eax
  419.   00018    ff 51 08     call     DWORD PTR [ecx+8]
  420.   0001b    83 66 4c 00     and     DWORD PTR [esi+76], 0
  421. $L56375:
  422.  
  423. ; 45   :     GXRELEASE(m_pDecl);
  424.  
  425.   0001f    8b 46 50     mov     eax, DWORD PTR [esi+80]
  426.   00022    85 c0         test     eax, eax
  427.   00024    74 0a         je     SHORT $L56379
  428.   00026    8b 08         mov     ecx, DWORD PTR [eax]
  429.   00028    50         push     eax
  430.   00029    ff 51 08     call     DWORD PTR [ecx+8]
  431.   0002c    83 66 50 00     and     DWORD PTR [esi+80], 0
  432. $L56379:
  433.   00030    5e         pop     esi
  434.  
  435. ; 46   : }
  436.  
  437.   00031    c3         ret     0
  438. ??1CAdjacencyOutline@@QAE@XZ ENDP            ; CAdjacencyOutline::~CAdjacencyOutline
  439. _TEXT    ENDS
  440. PUBLIC    ?CopyWeights@@YAXPAMK0K@Z            ; CopyWeights
  441. EXTRN    __fltused:NEAR
  442. ; Function compile flags: /Ogs
  443. ;    COMDAT ?CopyWeights@@YAXPAMK0K@Z
  444. _TEXT    SEGMENT
  445. _pfWeightSrc$ = 8                    ; size = 4
  446. _cWeightsSrc$ = 12                    ; size = 4
  447. _pfWeightDest$ = 16                    ; size = 4
  448. _cWeightsDest$ = 20                    ; size = 4
  449. ?CopyWeights@@YAXPAMK0K@Z PROC NEAR            ; CopyWeights, COMDAT
  450.  
  451. ; 164  :     {
  452. ; 165  :         pfWeightDest[iWeight] = 0.0f;
  453. ; 166  :     }
  454. ; 167  : }
  455.  
  456.   00000    8b ff         npad     2
  457.  
  458. ; 140  : {
  459.  
  460.   00002    55         push     ebp
  461.   00003    8b ec         mov     ebp, esp
  462.  
  463. ; 141  :     float fSum;
  464. ; 142  :     DWORD iWeight;
  465. ; 143  :     float fWeight;
  466. ; 144  : 
  467. ; 145  :     // there should always be more dest weights than source
  468. ; 146  :     GXASSERT(cWeightsSrc < cWeightsDest);
  469. ; 147  : 
  470. ; 148  :     // first copy the weights that exist in the source
  471. ; 149  :     fSum = 0.0f;
  472. ; 150  :     for (iWeight = 0; iWeight < cWeightsSrc; iWeight++)
  473.  
  474.   00005    8b 55 10     mov     edx, DWORD PTR _pfWeightDest$[ebp]
  475.   00008    d9 ee         fldz
  476.   0000a    57         push     edi
  477.   0000b    8b 7d 0c     mov     edi, DWORD PTR _cWeightsSrc$[ebp]
  478.   0000e    33 c0         xor     eax, eax
  479.   00010    85 ff         test     edi, edi
  480.   00012    76 1a         jbe     SHORT $L56447
  481.   00014    8b 4d 08     mov     ecx, DWORD PTR _pfWeightSrc$[ebp]
  482.   00017    56         push     esi
  483.   00018    8b f2         mov     esi, edx
  484.   0001a    2b ca         sub     ecx, edx
  485.   0001c    8b c7         mov     eax, edi
  486. $L56445:
  487.  
  488. ; 151  :     {
  489. ; 152  :         fWeight = pfWeightSrc[iWeight];
  490.  
  491.   0001e    d9 04 31     fld     DWORD PTR [ecx+esi]
  492.  
  493. ; 153  :         fSum += fWeight;
  494.  
  495.   00021    d9 c0         fld     ST(0)
  496.   00023    de c2         faddp     ST(2), ST(0)
  497.  
  498. ; 154  : 
  499. ; 155  :         pfWeightDest[iWeight] = fWeight;
  500.  
  501.   00025    d9 1e         fstp     DWORD PTR [esi]
  502.   00027    83 c6 04     add     esi, 4
  503.   0002a    4f         dec     edi
  504.   0002b    75 f1         jne     SHORT $L56445
  505.   0002d    5e         pop     esi
  506. $L56447:
  507.  
  508. ; 156  :     }
  509. ; 157  : 
  510. ; 158  :     // now set the implied weight - always exists in dest
  511. ; 159  :     pfWeightDest[iWeight] = 1.0f - fSum;
  512. ; 160  :     iWeight += 1;
  513. ; 161  : 
  514. ; 162  :     // set any other weights that are unused to 0.0f
  515. ; 163  :     for (; iWeight < cWeightsDest; iWeight++)
  516.  
  517.   0002e    8b 4d 14     mov     ecx, DWORD PTR _cWeightsDest$[ebp]
  518.   00031    d9 e8         fld1
  519.   00033    d8 e1         fsub     ST(0), ST(1)
  520.   00035    d9 1c 82     fstp     DWORD PTR [edx+eax*4]
  521.   00038    40         inc     eax
  522.   00039    3b c1         cmp     eax, ecx
  523.   0003b    dd d8         fstp     ST(0)
  524.   0003d    73 09         jae     SHORT $L56448
  525.   0003f    8d 3c 82     lea     edi, DWORD PTR [edx+eax*4]
  526.   00042    2b c8         sub     ecx, eax
  527.   00044    33 c0         xor     eax, eax
  528.   00046    f3 ab         rep stosd
  529. $L56448:
  530.   00048    5f         pop     edi
  531.  
  532. ; 164  :     {
  533. ; 165  :         pfWeightDest[iWeight] = 0.0f;
  534. ; 166  :     }
  535. ; 167  : }
  536.  
  537.   00049    5d         pop     ebp
  538.   0004a    c3         ret     0
  539. ?CopyWeights@@YAXPAMK0K@Z ENDP                ; CopyWeights
  540. _TEXT    ENDS
  541. PUBLIC    ?CopyIndexedWeights@@YAXPAMK0K@Z        ; CopyIndexedWeights
  542. ; Function compile flags: /Ogs
  543. ;    COMDAT ?CopyIndexedWeights@@YAXPAMK0K@Z
  544. _TEXT    SEGMENT
  545. _pfWeightSrc$ = 8                    ; size = 4
  546. _cWeightsSrc$ = 12                    ; size = 4
  547. _pfWeightDest$ = 16                    ; size = 4
  548. _cWeightsDest$ = 20                    ; size = 4
  549. ?CopyIndexedWeights@@YAXPAMK0K@Z PROC NEAR        ; CopyIndexedWeights, COMDAT
  550.  
  551. ; 206  : }
  552.  
  553.   00000    8b ff         npad     2
  554.  
  555. ; 176  : {
  556.  
  557.   00002    55         push     ebp
  558.   00003    8b ec         mov     ebp, esp
  559.  
  560. ; 177  :     float fSum;
  561. ; 178  :     DWORD iWeight;
  562. ; 179  :     float fWeight;
  563. ; 180  : 
  564. ; 181  :     // there should always be more dest weights than source
  565. ; 182  :     GXASSERT(cWeightsSrc < cWeightsDest);
  566. ; 183  : 
  567. ; 184  :     // first copy the weights that exist in the source
  568. ; 185  :     fSum = 0.0f;
  569. ; 186  :     for (iWeight = 0; iWeight < cWeightsSrc - 1; iWeight++)
  570.  
  571.   00005    8b 55 10     mov     edx, DWORD PTR _pfWeightDest$[ebp]
  572.   00008    d9 ee         fldz
  573.   0000a    53         push     ebx
  574.   0000b    8b 5d 0c     mov     ebx, DWORD PTR _cWeightsSrc$[ebp]
  575.   0000e    8d 4b ff     lea     ecx, DWORD PTR [ebx-1]
  576.   00011    56         push     esi
  577.   00012    33 c0         xor     eax, eax
  578.   00014    85 c9         test     ecx, ecx
  579.   00016    57         push     edi
  580.   00017    76 18         jbe     SHORT $L56463
  581.   00019    8b 7d 08     mov     edi, DWORD PTR _pfWeightSrc$[ebp]
  582.   0001c    8b f2         mov     esi, edx
  583.   0001e    2b fa         sub     edi, edx
  584.   00020    8b c1         mov     eax, ecx
  585. $L56461:
  586.  
  587. ; 187  :     {
  588. ; 188  :         fWeight = pfWeightSrc[iWeight];
  589.  
  590.   00022    d9 04 37     fld     DWORD PTR [edi+esi]
  591.  
  592. ; 189  :         fSum += fWeight;
  593.  
  594.   00025    d9 c0         fld     ST(0)
  595.   00027    de c2         faddp     ST(2), ST(0)
  596.  
  597. ; 190  : 
  598. ; 191  :         pfWeightDest[iWeight] = fWeight;
  599.  
  600.   00029    d9 1e         fstp     DWORD PTR [esi]
  601.   0002b    83 c6 04     add     esi, 4
  602.   0002e    49         dec     ecx
  603.   0002f    75 f1         jne     SHORT $L56461
  604. $L56463:
  605.  
  606. ; 192  :     }
  607. ; 193  : 
  608. ; 194  :     // now set the implied weight - always exists in dest
  609. ; 195  :     pfWeightDest[iWeight] = 1.0f - fSum;
  610. ; 196  :     iWeight += 1;
  611. ; 197  : 
  612. ; 198  :     // set any other weights that are unused to 0.0f
  613. ; 199  :     for (; iWeight < cWeightsDest - 1; iWeight++)
  614.  
  615.   00031    8b 75 14     mov     esi, DWORD PTR _cWeightsDest$[ebp]
  616.   00034    d9 e8         fld1
  617.   00036    d8 e1         fsub     ST(0), ST(1)
  618.   00038    8d 4e ff     lea     ecx, DWORD PTR [esi-1]
  619.   0003b    d9 1c 82     fstp     DWORD PTR [edx+eax*4]
  620.   0003e    40         inc     eax
  621.   0003f    3b c1         cmp     eax, ecx
  622.   00041    dd d8         fstp     ST(0)
  623.   00043    73 09         jae     SHORT $L56464
  624.   00045    8d 3c 82     lea     edi, DWORD PTR [edx+eax*4]
  625.   00048    2b c8         sub     ecx, eax
  626.   0004a    33 c0         xor     eax, eax
  627.   0004c    f3 ab         rep stosd
  628. $L56464:
  629.  
  630. ; 200  :     {
  631. ; 201  :         pfWeightDest[iWeight] = 0.0f;
  632. ; 202  :     }
  633. ; 203  : 
  634. ; 204  :     // copy the indices straight from one to the other
  635. ; 205  :     memcpy(&pfWeightDest[cWeightsDest-1], &pfWeightSrc[cWeightsSrc-1], sizeof(DWORD));
  636.  
  637.   0004e    8b 45 08     mov     eax, DWORD PTR _pfWeightSrc$[ebp]
  638.   00051    8b 44 98 fc     mov     eax, DWORD PTR [eax+ebx*4-4]
  639.   00055    5f         pop     edi
  640.   00056    89 44 b2 fc     mov     DWORD PTR [edx+esi*4-4], eax
  641.   0005a    5e         pop     esi
  642.   0005b    5b         pop     ebx
  643.  
  644. ; 206  : }
  645.  
  646.   0005c    5d         pop     ebp
  647.   0005d    c3         ret     0
  648. ?CopyIndexedWeights@@YAXPAMK0K@Z ENDP            ; CopyIndexedWeights
  649. _TEXT    ENDS
  650. PUBLIC    ??0D3DXMATRIX@@QAE@XZ                ; D3DXMATRIX::D3DXMATRIX
  651. ; Function compile flags: /Ogs
  652. ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.h
  653. ;    COMDAT ??0D3DXMATRIX@@QAE@XZ
  654. _TEXT    SEGMENT
  655. ??0D3DXMATRIX@@QAE@XZ PROC NEAR                ; D3DXMATRIX::D3DXMATRIX, COMDAT
  656. ; _this$ = ecx
  657.  
  658. ; 315  :     D3DXMATRIX() {};
  659.  
  660.   00000    8b c1         mov     eax, ecx
  661.   00002    c3         ret     0
  662. ??0D3DXMATRIX@@QAE@XZ ENDP                ; D3DXMATRIX::D3DXMATRIX
  663. _TEXT    ENDS
  664. PUBLIC    ??0D3DXVECTOR3@@QAE@MMM@Z            ; D3DXVECTOR3::D3DXVECTOR3
  665. ; Function compile flags: /Ogs
  666. ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.inl
  667. ;    COMDAT ??0D3DXVECTOR3@@QAE@MMM@Z
  668. _TEXT    SEGMENT
  669. _fx$ = 8                        ; size = 4
  670. _fy$ = 12                        ; size = 4
  671. _fz$ = 16                        ; size = 4
  672. ??0D3DXVECTOR3@@QAE@MMM@Z PROC NEAR            ; D3DXVECTOR3::D3DXVECTOR3, COMDAT
  673. ; _this$ = ecx
  674.  
  675. ; 308  : }
  676.  
  677.   00000    8b ff         npad     2
  678.  
  679. ; 304  : {
  680.  
  681.   00002    55         push     ebp
  682.   00003    8b ec         mov     ebp, esp
  683.   00005    8b c1         mov     eax, ecx
  684.  
  685. ; 305  :     x = fx;
  686.  
  687.   00007    8b 4d 08     mov     ecx, DWORD PTR _fx$[ebp]
  688.   0000a    89 08         mov     DWORD PTR [eax], ecx
  689.  
  690. ; 306  :     y = fy;
  691.  
  692.   0000c    8b 4d 0c     mov     ecx, DWORD PTR _fy$[ebp]
  693.   0000f    89 48 04     mov     DWORD PTR [eax+4], ecx
  694.  
  695. ; 307  :     z = fz;
  696.  
  697.   00012    8b 4d 10     mov     ecx, DWORD PTR _fz$[ebp]
  698.   00015    89 48 08     mov     DWORD PTR [eax+8], ecx
  699.  
  700. ; 308  : }
  701.  
  702.   00018    5d         pop     ebp
  703.   00019    c2 0c 00     ret     12            ; 0000000cH
  704. ??0D3DXVECTOR3@@QAE@MMM@Z ENDP                ; D3DXVECTOR3::D3DXVECTOR3
  705. _TEXT    ENDS
  706. PUBLIC    ?CreateEmptyOutline@CAdjacencyOutline@@AAEJXZ    ; CAdjacencyOutline::CreateEmptyOutline
  707. ; Function compile flags: /Ogs
  708. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\adjoutline.cpp
  709. ;    COMDAT ?CreateEmptyOutline@CAdjacencyOutline@@AAEJXZ
  710. _TEXT    SEGMENT
  711. ?CreateEmptyOutline@CAdjacencyOutline@@AAEJXZ PROC NEAR    ; CAdjacencyOutline::CreateEmptyOutline, COMDAT
  712. ; _this$ = ecx
  713.  
  714. ; 835  : }
  715.  
  716.   00000    8b ff         npad     2
  717.   00002    56         push     esi
  718.  
  719. ; 827  : {
  720.  
  721.   00003    8b f1         mov     esi, ecx
  722.  
  723. ; 828  :     GXRELEASE(m_pVertexBuffer);
  724.  
  725.   00005    8b 46 4c     mov     eax, DWORD PTR [esi+76]
  726.   00008    85 c0         test     eax, eax
  727.   0000a    74 0a         je     SHORT $L56776
  728.   0000c    8b 08         mov     ecx, DWORD PTR [eax]
  729.   0000e    50         push     eax
  730.   0000f    ff 51 08     call     DWORD PTR [ecx+8]
  731.   00012    83 66 4c 00     and     DWORD PTR [esi+76], 0
  732. $L56776:
  733.  
  734. ; 829  :     delete []m_rgaeAttributeTable;
  735.  
  736.   00016    ff 76 54     push     DWORD PTR [esi+84]
  737.   00019    e8 00 00 00 00     call     ??3@YAXPAX@Z        ; operator delete
  738.  
  739. ; 830  :     m_rgaeAttributeTable = NULL;
  740.  
  741.   0001e    83 66 54 00     and     DWORD PTR [esi+84], 0
  742.  
  743. ; 831  : 
  744. ; 832  :     m_caeAttributeTable = 0;
  745.  
  746.   00022    83 66 58 00     and     DWORD PTR [esi+88], 0
  747.   00026    59         pop     ecx
  748.  
  749. ; 833  : 
  750. ; 834  :     return S_OK;
  751.  
  752.   00027    33 c0         xor     eax, eax
  753.   00029    5e         pop     esi
  754.  
  755. ; 835  : }
  756.  
  757.   0002a    c3         ret     0
  758. ?CreateEmptyOutline@CAdjacencyOutline@@AAEJXZ ENDP    ; CAdjacencyOutline::CreateEmptyOutline
  759. _TEXT    ENDS
  760. PUBLIC    __real@3b808081
  761. PUBLIC    ??0D3DXCOLOR@@QAE@K@Z                ; D3DXCOLOR::D3DXCOLOR
  762. ;    COMDAT __real@3b808081
  763. ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.inl
  764. CONST    SEGMENT
  765. __real@3b808081 DD 03b808081r            ; 0.00392157
  766. ; Function compile flags: /Ogs
  767. CONST    ENDS
  768. ;    COMDAT ??0D3DXCOLOR@@QAE@K@Z
  769. _TEXT    SEGMENT
  770. tv186 = 8                        ; size = 4
  771. tv185 = 8                        ; size = 4
  772. tv184 = 8                        ; size = 4
  773. tv183 = 8                        ; size = 4
  774. _dw$ = 8                        ; size = 4
  775. ??0D3DXCOLOR@@QAE@K@Z PROC NEAR                ; D3DXCOLOR::D3DXCOLOR, COMDAT
  776. ; _this$ = ecx
  777.  
  778. ; 1352 : }
  779.  
  780.   00000    8b ff         npad     2
  781.  
  782. ; 1346 : {
  783.  
  784.   00002    55         push     ebp
  785.   00003    8b ec         mov     ebp, esp
  786.  
  787. ; 1347 :     CONST FLOAT f = 1.0f / 255.0f;
  788. ; 1348 :     r = f * (FLOAT) (unsigned char) (dw >> 16);
  789.  
  790.   00005    d9 05 00 00 00
  791.     00         fld     DWORD PTR __real@3b808081
  792.   0000b    8b c1         mov     eax, ecx
  793.   0000d    8b 4d 08     mov     ecx, DWORD PTR _dw$[ebp]
  794.   00010    8b d1         mov     edx, ecx
  795.   00012    c1 ea 10     shr     edx, 16            ; 00000010H
  796.   00015    0f b6 d2     movzx     edx, dl
  797.   00018    89 55 08     mov     DWORD PTR tv186[ebp], edx
  798.  
  799. ; 1349 :     g = f * (FLOAT) (unsigned char) (dw >>  8);
  800.  
  801.   0001b    8b d1         mov     edx, ecx
  802.   0001d    c1 ea 08     shr     edx, 8
  803.   00020    db 45 08     fild     DWORD PTR tv186[ebp]
  804.   00023    0f b6 d2     movzx     edx, dl
  805.   00026    d8 c9         fmul     ST(0), ST(1)
  806.   00028    89 55 08     mov     DWORD PTR tv185[ebp], edx
  807.  
  808. ; 1350 :     b = f * (FLOAT) (unsigned char) (dw >>  0);
  809.  
  810.   0002b    0f b6 d1     movzx     edx, cl
  811.   0002e    d9 18         fstp     DWORD PTR [eax]
  812.   00030    db 45 08     fild     DWORD PTR tv185[ebp]
  813.   00033    89 55 08     mov     DWORD PTR tv184[ebp], edx
  814.  
  815. ; 1351 :     a = f * (FLOAT) (unsigned char) (dw >> 24);
  816.  
  817.   00036    c1 e9 18     shr     ecx, 24            ; 00000018H
  818.   00039    d8 c9         fmul     ST(0), ST(1)
  819.   0003b    d9 58 04     fstp     DWORD PTR [eax+4]
  820.   0003e    db 45 08     fild     DWORD PTR tv184[ebp]
  821.   00041    89 4d 08     mov     DWORD PTR tv183[ebp], ecx
  822.   00044    d8 c9         fmul     ST(0), ST(1)
  823.   00046    d9 58 08     fstp     DWORD PTR [eax+8]
  824.   00049    db 45 08     fild     DWORD PTR tv183[ebp]
  825.   0004c    d8 c9         fmul     ST(0), ST(1)
  826.   0004e    d9 58 0c     fstp     DWORD PTR [eax+12]
  827.   00051    dd d8         fstp     ST(0)
  828.  
  829. ; 1352 : }
  830.  
  831.   00053    5d         pop     ebp
  832.   00054    c2 04 00     ret     4
  833. ??0D3DXCOLOR@@QAE@K@Z ENDP                ; D3DXCOLOR::D3DXCOLOR
  834. _TEXT    ENDS
  835. PUBLIC    ?CWeights@DXCrackFVF@@QAEKXZ            ; DXCrackFVF::CWeights
  836. ; Function compile flags: /Ogs
  837. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\gxcrackfvf.h
  838. ;    COMDAT ?CWeights@DXCrackFVF@@QAEKXZ
  839. _TEXT    SEGMENT
  840. ?CWeights@DXCrackFVF@@QAEKXZ PROC NEAR            ; DXCrackFVF::CWeights, COMDAT
  841. ; _this$ = ecx
  842.  
  843. ; 76   :     inline DWORD        CWeights()      { return m_cWeights; }
  844.  
  845.   00000    8b 41 38     mov     eax, DWORD PTR [ecx+56]
  846.   00003    c3         ret     0
  847. ?CWeights@DXCrackFVF@@QAEKXZ ENDP            ; DXCrackFVF::CWeights
  848. _TEXT    ENDS
  849. PUBLIC    ??0DXCrackFVF@@QAE@K@Z                ; DXCrackFVF::DXCrackFVF
  850. ; Function compile flags: /Ogs
  851. ;    COMDAT ??0DXCrackFVF@@QAE@K@Z
  852. _TEXT    SEGMENT
  853. _dwFVF$ = 8                        ; size = 4
  854. ??0DXCrackFVF@@QAE@K@Z PROC NEAR            ; DXCrackFVF::DXCrackFVF, COMDAT
  855. ; _this$ = ecx
  856.  
  857. ; 192  : }
  858.  
  859.   00000    8b ff         npad     2
  860.  
  861. ; 115  : {
  862.  
  863.   00002    55         push     ebp
  864.   00003    8b ec         mov     ebp, esp
  865.   00005    8b c1         mov     eax, ecx
  866.   00007    53         push     ebx
  867.   00008    8b 5d 08     mov     ebx, DWORD PTR _dwFVF$[ebp]
  868.   0000b    56         push     esi
  869.  
  870. ; 116  :     DWORD oCur = 0;
  871. ; 117  :     DWORD dwPosition;
  872. ; 118  :     DWORD dwTexCoordInfo;
  873. ; 119  :     DWORD iTexCoord;
  874. ; 120  :     DWORD dwTexCoordSize;
  875. ; 121  :     m_oTex[0] = 0;
  876. ; 122  : 
  877. ; 123  :     dwPosition = dwFVF & D3DFVF_POSITION_MASK;
  878.  
  879.   0000c    8b d3         mov     edx, ebx
  880.   0000e    57         push     edi
  881.   0000f    33 ff         xor     edi, edi
  882.   00011    81 e2 0e 40 00
  883.     00         and     edx, 16398        ; 0000400eH
  884.   00017    33 c9         xor     ecx, ecx
  885.  
  886. ; 124  : 
  887. ; 125  :     if (dwPosition == D3DFVF_XYZ)
  888.  
  889.   00019    83 fa 02     cmp     edx, 2
  890.   0001c    8d 70 18     lea     esi, DWORD PTR [eax+24]
  891.   0001f    89 18         mov     DWORD PTR [eax], ebx
  892.   00021    89 78 08     mov     DWORD PTR [eax+8], edi
  893.   00024    89 78 0c     mov     DWORD PTR [eax+12], edi
  894.   00027    89 78 10     mov     DWORD PTR [eax+16], edi
  895.   0002a    89 78 14     mov     DWORD PTR [eax+20], edi
  896.   0002d    89 78 38     mov     DWORD PTR [eax+56], edi
  897.   00030    89 78 3c     mov     DWORD PTR [eax+60], edi
  898.   00033    89 3e         mov     DWORD PTR [esi], edi
  899.   00035    75 05         jne     SHORT $L55539
  900.  
  901. ; 126  :     {
  902. ; 127  :         oCur += 3 * sizeof(float);
  903.  
  904.   00037    6a 0c         push     12            ; 0000000cH
  905. $L56880:
  906.   00039    59         pop     ecx
  907.  
  908. ; 128  :     }
  909. ; 129  :     else if (dwPosition == D3DFVF_XYZRHW)
  910.  
  911.   0003a    eb 1d         jmp     SHORT $L56877
  912. $L55539:
  913.   0003c    83 fa 04     cmp     edx, 4
  914.   0003f    75 04         jne     SHORT $L55542
  915.  
  916. ; 130  :     {
  917. ; 131  :         oCur += 4 * sizeof(float);
  918.  
  919.   00041    6a 10         push     16            ; 00000010H
  920.  
  921. ; 132  :     }
  922. ; 133  :     else if (dwPosition >= D3DFVF_XYZB1)
  923.  
  924.   00043    eb f4         jmp     SHORT $L56880
  925. $L55542:
  926.   00045    83 fa 06     cmp     edx, 6
  927.   00048    72 0f         jb     SHORT $L56877
  928.  
  929. ; 134  :     {
  930. ; 135  :         m_cWeights = (dwPosition >> 1) - 2;
  931.  
  932.   0004a    d1 ea         shr     edx, 1
  933.   0004c    8d 4a fe     lea     ecx, DWORD PTR [edx-2]
  934.   0004f    89 48 38     mov     DWORD PTR [eax+56], ecx
  935.  
  936. ; 136  :         oCur += (3 + m_cWeights) * sizeof(float);
  937.  
  938.   00052    8d 0c 8d 0c 00
  939.     00 00         lea     ecx, DWORD PTR [ecx*4+12]
  940. $L56877:
  941.  
  942. ; 137  :     }
  943. ; 138  : 
  944. ; 139  :     if ( dwFVF & D3DFVF_NORMAL )
  945.  
  946.   00059    f6 c3 10     test     bl, 16            ; 00000010H
  947.   0005c    74 06         je     SHORT $L55547
  948.  
  949. ; 140  :     {
  950. ; 141  :         m_oNormal = oCur;
  951.  
  952.   0005e    89 48 08     mov     DWORD PTR [eax+8], ecx
  953.  
  954. ; 142  :         oCur += 3 * sizeof(float);
  955.  
  956.   00061    83 c1 0c     add     ecx, 12            ; 0000000cH
  957. $L55547:
  958.  
  959. ; 143  :     }
  960. ; 144  : 
  961. ; 145  :     if ( dwFVF & D3DFVF_PSIZE )
  962.  
  963.   00064    f6 c3 20     test     bl, 32            ; 00000020H
  964.   00067    74 06         je     SHORT $L56878
  965.  
  966. ; 146  :     {
  967. ; 147  :         m_oPointSize = oCur;
  968.  
  969.   00069    89 48 0c     mov     DWORD PTR [eax+12], ecx
  970.  
  971. ; 148  :         oCur += sizeof(float);
  972.  
  973.   0006c    83 c1 04     add     ecx, 4
  974. $L56878:
  975.  
  976. ; 149  :     }
  977. ; 150  : 
  978. ; 151  :     if ( dwFVF & D3DFVF_DIFFUSE )
  979.  
  980.   0006f    f6 c3 40     test     bl, 64            ; 00000040H
  981.   00072    74 06         je     SHORT $L56879
  982.  
  983. ; 152  :     {
  984. ; 153  :         m_oDiffuse = oCur;
  985.  
  986.   00074    89 48 10     mov     DWORD PTR [eax+16], ecx
  987.  
  988. ; 154  :         oCur += sizeof(D3DCOLOR);
  989.  
  990.   00077    83 c1 04     add     ecx, 4
  991. $L56879:
  992.  
  993. ; 155  :     }
  994. ; 156  : 
  995. ; 157  :     if ( dwFVF & D3DFVF_SPECULAR )
  996.  
  997.   0007a    84 db         test     bl, bl
  998.   0007c    79 06         jns     SHORT $L55553
  999.  
  1000. ; 158  :     {
  1001. ; 159  :         m_oSpecular = oCur;
  1002.  
  1003.   0007e    89 48 14     mov     DWORD PTR [eax+20], ecx
  1004.  
  1005. ; 160  :         oCur += sizeof(D3DCOLOR);
  1006.  
  1007.   00081    83 c1 04     add     ecx, 4
  1008. $L55553:
  1009.  
  1010. ; 161  :     }
  1011. ; 162  : 
  1012. ; 163  :     if ( dwFVF & D3DFVF_TEXCOUNT_MASK )
  1013.  
  1014.   00084    f6 c7 0f     test     bh, 15            ; 0000000fH
  1015.   00087    74 3d         je     SHORT $L55559
  1016.  
  1017. ; 164  :     {
  1018. ; 165  :         m_oTex[0] = oCur;
  1019. ; 166  : 
  1020. ; 167  :         // only one tu/tv set currently supported
  1021. ; 168  : 
  1022. ; 169  :         m_cTexCoords = ((dwFVF & D3DFVF_TEXCOUNT_MASK)>>D3DFVF_TEXCOUNT_SHIFT);
  1023.  
  1024.   00089    8b d3         mov     edx, ebx
  1025.   0008b    c1 ea 08     shr     edx, 8
  1026.   0008e    83 e2 0f     and     edx, 15            ; 0000000fH
  1027.  
  1028. ; 170  : 
  1029. ; 171  :         if(m_cTexCoords > 8)
  1030.  
  1031.   00091    83 fa 08     cmp     edx, 8
  1032.   00094    89 0e         mov     DWORD PTR [esi], ecx
  1033.   00096    89 50 3c     mov     DWORD PTR [eax+60], edx
  1034.   00099    76 07         jbe     SHORT $L55556
  1035.  
  1036. ; 172  :             m_cTexCoords = 8;
  1037.  
  1038.   0009b    c7 40 3c 08 00
  1039.     00 00         mov     DWORD PTR [eax+60], 8
  1040. $L55556:
  1041.  
  1042. ; 173  : 
  1043. ; 174  :         // all 2d, then go quick route
  1044. ; 175  :         //if ((dwFVF & 0xffff0000) == 0)
  1045. ; 176  :         //{
  1046. ; 177  :             //oCur += sizeof(float) * 2 * m_cTexCoords;
  1047. ; 178  :         //}
  1048. ; 179  :         //else
  1049. ; 180  :         {
  1050. ; 181  :             dwTexCoordSize = (dwFVF & 0xffff0000) >> 16;
  1051.  
  1052.   000a2    c1 eb 10     shr     ebx, 16            ; 00000010H
  1053.  
  1054. ; 182  :             for (iTexCoord = 0; iTexCoord < m_cTexCoords; iTexCoord++)
  1055.  
  1056.   000a5    33 d2         xor     edx, edx
  1057.   000a7    39 78 3c     cmp     DWORD PTR [eax+60], edi
  1058.   000aa    76 1a         jbe     SHORT $L55559
  1059. $L55557:
  1060.  
  1061. ; 183  :             {
  1062. ; 184  :                 m_oTex[iTexCoord] = oCur;
  1063. ; 185  :                 oCur += x_rgdwTexCoordSize[dwTexCoordSize & 0x3];
  1064.  
  1065.   000ac    8b fb         mov     edi, ebx
  1066.   000ae    83 e7 03     and     edi, 3
  1067.   000b1    89 0e         mov     DWORD PTR [esi], ecx
  1068.   000b3    03 0c bd 00 00
  1069.     00 00         add     ecx, DWORD PTR _x_rgdwTexCoordSize[edi*4]
  1070.  
  1071. ; 186  :                 dwTexCoordSize = dwTexCoordSize >> 2;
  1072.  
  1073.   000ba    c1 eb 02     shr     ebx, 2
  1074.   000bd    42         inc     edx
  1075.   000be    83 c6 04     add     esi, 4
  1076.   000c1    3b 50 3c     cmp     edx, DWORD PTR [eax+60]
  1077.   000c4    72 e6         jb     SHORT $L55557
  1078. $L55559:
  1079.   000c6    5f         pop     edi
  1080.   000c7    5e         pop     esi
  1081.  
  1082. ; 187  :             }
  1083. ; 188  :         }
  1084. ; 189  :     }
  1085. ; 190  : 
  1086. ; 191  :     m_cBytesPerVertex = oCur;
  1087.  
  1088.   000c8    89 48 04     mov     DWORD PTR [eax+4], ecx
  1089.   000cb    5b         pop     ebx
  1090.  
  1091. ; 192  : }
  1092.  
  1093.   000cc    5d         pop     ebp
  1094.   000cd    c2 04 00     ret     4
  1095. ??0DXCrackFVF@@QAE@K@Z ENDP                ; DXCrackFVF::DXCrackFVF
  1096. _TEXT    ENDS
  1097. PUBLIC    ?GetArrayElem@DXCrackFVF@@QAEPAEPAXK@Z        ; DXCrackFVF::GetArrayElem
  1098. ; Function compile flags: /Ogs
  1099. ;    COMDAT ?GetArrayElem@DXCrackFVF@@QAEPAEPAXK@Z
  1100. _TEXT    SEGMENT
  1101. _pvPoints$ = 8                        ; size = 4
  1102. _iElem$ = 12                        ; size = 4
  1103. ?GetArrayElem@DXCrackFVF@@QAEPAEPAXK@Z PROC NEAR    ; DXCrackFVF::GetArrayElem, COMDAT
  1104. ; _this$ = ecx
  1105.  
  1106. ; 202  : }
  1107.  
  1108.   00000    8b ff         npad     2
  1109.  
  1110. ; 200  : { 
  1111.  
  1112.   00002    55         push     ebp
  1113.   00003    8b ec         mov     ebp, esp
  1114.  
  1115. ; 201  :     return ((PBYTE)pvPoints + (iElem * m_cBytesPerVertex)); 
  1116.  
  1117.   00005    8b 41 04     mov     eax, DWORD PTR [ecx+4]
  1118.   00008    0f af 45 0c     imul     eax, DWORD PTR _iElem$[ebp]
  1119.   0000c    03 45 08     add     eax, DWORD PTR _pvPoints$[ebp]
  1120.  
  1121. ; 202  : }
  1122.  
  1123.   0000f    5d         pop     ebp
  1124.   00010    c2 08 00     ret     8
  1125. ?GetArrayElem@DXCrackFVF@@QAEPAEPAXK@Z ENDP        ; DXCrackFVF::GetArrayElem
  1126. _TEXT    ENDS
  1127. PUBLIC    ?SetPosition@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetPosition
  1128. ; Function compile flags: /Ogs
  1129. ;    COMDAT ?SetPosition@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z
  1130. _TEXT    SEGMENT
  1131. _pvPoint$ = 8                        ; size = 4
  1132. _pvPos$ = 12                        ; size = 4
  1133. ?SetPosition@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z PROC NEAR ; DXCrackFVF::SetPosition, COMDAT
  1134. ; _this$ = ecx
  1135.  
  1136. ; 211  : }
  1137.  
  1138.   00000    8b ff         npad     2
  1139.  
  1140. ; 209  : {
  1141.  
  1142.   00002    55         push     ebp
  1143.   00003    8b ec         mov     ebp, esp
  1144.   00005    56         push     esi
  1145.  
  1146. ; 210  :     memcpy(pvPoint, pvPos, sizeof(D3DXVECTOR3));
  1147.  
  1148.   00006    8b 75 0c     mov     esi, DWORD PTR _pvPos$[ebp]
  1149.   00009    57         push     edi
  1150.   0000a    8b 7d 08     mov     edi, DWORD PTR _pvPoint$[ebp]
  1151.   0000d    a5         movsd
  1152.   0000e    a5         movsd
  1153.   0000f    a5         movsd
  1154.   00010    5f         pop     edi
  1155.   00011    5e         pop     esi
  1156.  
  1157. ; 211  : }
  1158.  
  1159.   00012    5d         pop     ebp
  1160.   00013    c2 08 00     ret     8
  1161. ?SetPosition@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z ENDP    ; DXCrackFVF::SetPosition
  1162. _TEXT    ENDS
  1163. PUBLIC    ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetTexCoord
  1164. ; Function compile flags: /Ogs
  1165. ;    COMDAT ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z
  1166. _TEXT    SEGMENT
  1167. _pvPoint$ = 8                        ; size = 4
  1168. _iTexCoord$ = 12                    ; size = 4
  1169. _pvTexCoord$ = 16                    ; size = 4
  1170. ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z PROC NEAR ; DXCrackFVF::SetTexCoord, COMDAT
  1171. ; _this$ = ecx
  1172.  
  1173. ; 296  :     }
  1174. ; 297  : }
  1175.  
  1176.   00000    8b ff         npad     2
  1177.  
  1178. ; 292  : {
  1179.  
  1180.   00002    55         push     ebp
  1181.   00003    8b ec         mov     ebp, esp
  1182.  
  1183. ; 293  :     if (iTexCoord < m_cTexCoords)
  1184.  
  1185.   00005    8b 45 0c     mov     eax, DWORD PTR _iTexCoord$[ebp]
  1186.   00008    3b 41 3c     cmp     eax, DWORD PTR [ecx+60]
  1187.   0000b    73 11         jae     SHORT $L55627
  1188.   0000d    56         push     esi
  1189.  
  1190. ; 294  :     {
  1191. ; 295  :         memcpy(((PBYTE)pvPoint) + m_oTex[iTexCoord], pvTexCoord, sizeof(D3DXVECTOR3));
  1192.  
  1193.   0000e    8b 75 10     mov     esi, DWORD PTR _pvTexCoord$[ebp]
  1194.   00011    57         push     edi
  1195.   00012    8b 7c 81 18     mov     edi, DWORD PTR [ecx+eax*4+24]
  1196.   00016    03 7d 08     add     edi, DWORD PTR _pvPoint$[ebp]
  1197.   00019    a5         movsd
  1198.   0001a    a5         movsd
  1199.   0001b    a5         movsd
  1200.   0001c    5f         pop     edi
  1201.   0001d    5e         pop     esi
  1202. $L55627:
  1203.  
  1204. ; 296  :     }
  1205. ; 297  : }
  1206.  
  1207.   0001e    5d         pop     ebp
  1208.   0001f    c2 0c 00     ret     12            ; 0000000cH
  1209. ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ENDP ; DXCrackFVF::SetTexCoord
  1210. _TEXT    ENDS
  1211. PUBLIC    ?PxyzwGetTexCoord@DXCrackFVF@@QAEPAUD3DXVECTOR4@@PAXI@Z ; DXCrackFVF::PxyzwGetTexCoord
  1212. ; Function compile flags: /Ogs
  1213. ;    COMDAT ?PxyzwGetTexCoord@DXCrackFVF@@QAEPAUD3DXVECTOR4@@PAXI@Z
  1214. _TEXT    SEGMENT
  1215. _pvPoint$ = 8                        ; size = 4
  1216. _index$ = 12                        ; size = 4
  1217. ?PxyzwGetTexCoord@DXCrackFVF@@QAEPAUD3DXVECTOR4@@PAXI@Z PROC NEAR ; DXCrackFVF::PxyzwGetTexCoord, COMDAT
  1218. ; _this$ = ecx
  1219.  
  1220. ; 446  : }
  1221.  
  1222.   00000    8b ff         npad     2
  1223.  
  1224. ; 444  : {
  1225.  
  1226.   00002    55         push     ebp
  1227.   00003    8b ec         mov     ebp, esp
  1228.  
  1229. ; 445  :     return (D3DXVECTOR4*) (((PBYTE)pvPoint) + m_oTex[index]);
  1230.  
  1231.   00005    8b 45 0c     mov     eax, DWORD PTR _index$[ebp]
  1232.   00008    8b 44 81 18     mov     eax, DWORD PTR [ecx+eax*4+24]
  1233.   0000c    03 45 08     add     eax, DWORD PTR _pvPoint$[ebp]
  1234.  
  1235. ; 446  : }
  1236.  
  1237.   0000f    5d         pop     ebp
  1238.   00010    c2 08 00     ret     8
  1239. ?PxyzwGetTexCoord@DXCrackFVF@@QAEPAUD3DXVECTOR4@@PAXI@Z ENDP ; DXCrackFVF::PxyzwGetTexCoord
  1240. _TEXT    ENDS
  1241. PUBLIC    ?PfGetWeights@DXCrackFVF@@QAEPAMPAX@Z        ; DXCrackFVF::PfGetWeights
  1242. ; Function compile flags: /Ogs
  1243. ;    COMDAT ?PfGetWeights@DXCrackFVF@@QAEPAMPAX@Z
  1244. _TEXT    SEGMENT
  1245. _pvPoint$ = 8                        ; size = 4
  1246. ?PfGetWeights@DXCrackFVF@@QAEPAMPAX@Z PROC NEAR        ; DXCrackFVF::PfGetWeights, COMDAT
  1247. ; _this$ = ecx
  1248.  
  1249. ; 455  : }
  1250.  
  1251.   00000    8b ff         npad     2
  1252.  
  1253. ; 453  : {
  1254.  
  1255.   00002    55         push     ebp
  1256.   00003    8b ec         mov     ebp, esp
  1257.  
  1258. ; 454  :     return (float*)(((PBYTE)pvPoint) + sizeof(D3DXVECTOR3));
  1259.  
  1260.   00005    8b 45 08     mov     eax, DWORD PTR _pvPoint$[ebp]
  1261.   00008    83 c0 0c     add     eax, 12            ; 0000000cH
  1262.  
  1263. ; 455  : }
  1264.  
  1265.   0000b    5d         pop     ebp
  1266.   0000c    c2 04 00     ret     4
  1267. ?PfGetWeights@DXCrackFVF@@QAEPAMPAX@Z ENDP        ; DXCrackFVF::PfGetWeights
  1268. _TEXT    ENDS
  1269. PUBLIC    ?BIndexedWeights@CD3DXCrackDecl1@@QAEHXZ    ; CD3DXCrackDecl1::BIndexedWeights
  1270. ; Function compile flags: /Ogs
  1271. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\crackdecl.h
  1272. ;    COMDAT ?BIndexedWeights@CD3DXCrackDecl1@@QAEHXZ
  1273. _TEXT    SEGMENT
  1274. ?BIndexedWeights@CD3DXCrackDecl1@@QAEHXZ PROC NEAR    ; CD3DXCrackDecl1::BIndexedWeights, COMDAT
  1275. ; _this$ = ecx
  1276.  
  1277. ; 184  :     BOOL BIndexedWeights()                           { return pIndexElement != NULL; }
  1278.  
  1279.   00000    33 c0         xor     eax, eax
  1280.   00002    39 81 90 00 00
  1281.     00         cmp     DWORD PTR [ecx+144], eax
  1282.   00008    0f 95 c0     setne     al
  1283.   0000b    c3         ret     0
  1284. ?BIndexedWeights@CD3DXCrackDecl1@@QAEHXZ ENDP        ; CD3DXCrackDecl1::BIndexedWeights
  1285. _TEXT    ENDS
  1286. PUBLIC    ?CWeights@CD3DXCrackDecl1@@QAEHXZ        ; CD3DXCrackDecl1::CWeights
  1287. ; Function compile flags: /Ogs
  1288. ;    COMDAT ?CWeights@CD3DXCrackDecl1@@QAEHXZ
  1289. _TEXT    SEGMENT
  1290. ?CWeights@CD3DXCrackDecl1@@QAEHXZ PROC NEAR        ; CD3DXCrackDecl1::CWeights, COMDAT
  1291. ; _this$ = ecx
  1292.  
  1293. ; 190  :     BOOL CWeights()                                  { return pWeightElement == NULL ? 0 : (pWeightElement->Type - D3DDECLTYPE_FLOAT1) + 1; }
  1294.  
  1295.   00000    8b 81 8c 00 00
  1296.     00         mov     eax, DWORD PTR [ecx+140]
  1297.   00006    85 c0         test     eax, eax
  1298.   00008    75 01         jne     SHORT $L56889
  1299.   0000a    c3         ret     0
  1300. $L56889:
  1301.   0000b    0f b6 40 04     movzx     eax, BYTE PTR [eax+4]
  1302.   0000f    40         inc     eax
  1303.   00010    c3         ret     0
  1304. ?CWeights@CD3DXCrackDecl1@@QAEHXZ ENDP            ; CD3DXCrackDecl1::CWeights
  1305. _TEXT    ENDS
  1306. PUBLIC    ?PvGetPosition@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z ; CD3DXCrackDecl1::PvGetPosition
  1307. ; Function compile flags: /Ogs
  1308. ;    COMDAT ?PvGetPosition@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z
  1309. _TEXT    SEGMENT
  1310. _pvPoint$ = 8                        ; size = 4
  1311. ?PvGetPosition@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z PROC NEAR ; CD3DXCrackDecl1::PvGetPosition, COMDAT
  1312. ; _this$ = ecx
  1313.  
  1314. ; 192  :     LPD3DXVECTOR3 PvGetPosition(PBYTE pvPoint)       { return (LPD3DXVECTOR3)(pvPoint + pPositionElement->Offset); }
  1315.  
  1316.   00000    8b ff         npad     2
  1317.   00002    55         push     ebp
  1318.   00003    8b ec         mov     ebp, esp
  1319.   00005    8b 81 88 00 00
  1320.     00         mov     eax, DWORD PTR [ecx+136]
  1321.   0000b    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  1322.   0000f    03 45 08     add     eax, DWORD PTR _pvPoint$[ebp]
  1323.   00012    5d         pop     ebp
  1324.   00013    c2 04 00     ret     4
  1325. ?PvGetPosition@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z ENDP ; CD3DXCrackDecl1::PvGetPosition
  1326. _TEXT    ENDS
  1327. PUBLIC    ?PfGetWeights@CD3DXCrackDecl1@@QAEPAMPAE@Z    ; CD3DXCrackDecl1::PfGetWeights
  1328. ; Function compile flags: /Ogs
  1329. ;    COMDAT ?PfGetWeights@CD3DXCrackDecl1@@QAEPAMPAE@Z
  1330. _TEXT    SEGMENT
  1331. _pvPoint$ = 8                        ; size = 4
  1332. ?PfGetWeights@CD3DXCrackDecl1@@QAEPAMPAE@Z PROC NEAR    ; CD3DXCrackDecl1::PfGetWeights, COMDAT
  1333. ; _this$ = ecx
  1334.  
  1335. ; 194  :     FLOAT *PfGetWeights(PBYTE pvPoint)               { return (FLOAT*)(pvPoint + pWeightElement->Offset); }
  1336.  
  1337.   00000    8b ff         npad     2
  1338.   00002    55         push     ebp
  1339.   00003    8b ec         mov     ebp, esp
  1340.   00005    8b 81 8c 00 00
  1341.     00         mov     eax, DWORD PTR [ecx+140]
  1342.   0000b    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  1343.   0000f    03 45 08     add     eax, DWORD PTR _pvPoint$[ebp]
  1344.   00012    5d         pop     ebp
  1345.   00013    c2 04 00     ret     4
  1346. ?PfGetWeights@CD3DXCrackDecl1@@QAEPAMPAE@Z ENDP        ; CD3DXCrackDecl1::PfGetWeights
  1347. _TEXT    ENDS
  1348. PUBLIC    ?GetArrayElem@CD3DXCrackDecl1@@QAEPAEPAEI@Z    ; CD3DXCrackDecl1::GetArrayElem
  1349. ; Function compile flags: /Ogs
  1350. ;    COMDAT ?GetArrayElem@CD3DXCrackDecl1@@QAEPAEPAEI@Z
  1351. _TEXT    SEGMENT
  1352. _pvPoints$ = 8                        ; size = 4
  1353. _iVertex$ = 12                        ; size = 4
  1354. ?GetArrayElem@CD3DXCrackDecl1@@QAEPAEPAEI@Z PROC NEAR    ; CD3DXCrackDecl1::GetArrayElem, COMDAT
  1355. ; _this$ = ecx
  1356.  
  1357. ; 223  :     PBYTE GetArrayElem(PBYTE pvPoints, UINT iVertex) { return pvPoints + m_cBytesPerVertex * iVertex; }
  1358.  
  1359.   00000    8b ff         npad     2
  1360.   00002    55         push     ebp
  1361.   00003    8b ec         mov     ebp, esp
  1362.   00005    8b 81 c0 00 00
  1363.     00         mov     eax, DWORD PTR [ecx+192]
  1364.   0000b    0f af 45 0c     imul     eax, DWORD PTR _iVertex$[ebp]
  1365.   0000f    03 45 08     add     eax, DWORD PTR _pvPoints$[ebp]
  1366.   00012    5d         pop     ebp
  1367.   00013    c2 08 00     ret     8
  1368. ?GetArrayElem@CD3DXCrackDecl1@@QAEPAEPAEI@Z ENDP    ; CD3DXCrackDecl1::GetArrayElem
  1369. _TEXT    ENDS
  1370. PUBLIC    ??0CD3DXCrackDecl1@@QAE@XZ            ; CD3DXCrackDecl1::CD3DXCrackDecl1
  1371. EXTRN    ??0CD3DXCrackDecl@@QAE@XZ:NEAR            ; CD3DXCrackDecl::CD3DXCrackDecl
  1372. ; Function compile flags: /Ogs
  1373. ;    COMDAT ??0CD3DXCrackDecl1@@QAE@XZ
  1374. _TEXT    SEGMENT
  1375. ??0CD3DXCrackDecl1@@QAE@XZ PROC NEAR            ; CD3DXCrackDecl1::CD3DXCrackDecl1, COMDAT
  1376. ; _this$ = ecx
  1377.  
  1378. ; 254  :         }
  1379.  
  1380.   00000    8b ff         npad     2
  1381.   00002    56         push     esi
  1382.   00003    57         push     edi
  1383.  
  1384. ; 252  :         {
  1385.  
  1386.   00004    8b f1         mov     esi, ecx
  1387.   00006    e8 00 00 00 00     call     ??0CD3DXCrackDecl@@QAE@XZ ; CD3DXCrackDecl::CD3DXCrackDecl
  1388.   0000b    33 c0         xor     eax, eax
  1389.  
  1390. ; 253  :         memset(rgpTextureElements, 0, sizeof(LPD3DVERTEXELEMENT9) * 8);
  1391.  
  1392.   0000d    6a 08         push     8
  1393.   0000f    59         pop     ecx
  1394.   00010    89 86 88 00 00
  1395.     00         mov     DWORD PTR [esi+136], eax
  1396.   00016    89 86 8c 00 00
  1397.     00         mov     DWORD PTR [esi+140], eax
  1398.   0001c    89 86 90 00 00
  1399.     00         mov     DWORD PTR [esi+144], eax
  1400.   00022    89 86 94 00 00
  1401.     00         mov     DWORD PTR [esi+148], eax
  1402.   00028    89 86 98 00 00
  1403.     00         mov     DWORD PTR [esi+152], eax
  1404.   0002e    89 86 9c 00 00
  1405.     00         mov     DWORD PTR [esi+156], eax
  1406.   00034    8d be a0 00 00
  1407.     00         lea     edi, DWORD PTR [esi+160]
  1408.   0003a    f3 ab         rep stosd
  1409.   0003c    5f         pop     edi
  1410.  
  1411. ; 254  :         }
  1412.  
  1413.   0003d    8b c6         mov     eax, esi
  1414.   0003f    5e         pop     esi
  1415.   00040    c3         ret     0
  1416. ??0CD3DXCrackDecl1@@QAE@XZ ENDP                ; CD3DXCrackDecl1::CD3DXCrackDecl1
  1417. _TEXT    ENDS
  1418. PUBLIC    ?SetDeclaration@CD3DXCrackDecl1@@QAEJPBU_D3DVERTEXELEMENT9@@@Z ; CD3DXCrackDecl1::SetDeclaration
  1419. EXTRN    _D3DXGetDeclVertexSize@8:NEAR
  1420. EXTRN    ?SetDeclaration@CD3DXCrackDecl@@QAEJPBU_D3DVERTEXELEMENT9@@@Z:NEAR ; CD3DXCrackDecl::SetDeclaration
  1421. ; Function compile flags: /Ogs
  1422. ;    COMDAT ?SetDeclaration@CD3DXCrackDecl1@@QAEJPBU_D3DVERTEXELEMENT9@@@Z
  1423. _TEXT    SEGMENT
  1424. _pElementsNew$ = 8                    ; size = 4
  1425. ?SetDeclaration@CD3DXCrackDecl1@@QAEJPBU_D3DVERTEXELEMENT9@@@Z PROC NEAR ; CD3DXCrackDecl1::SetDeclaration, COMDAT
  1426. ; _this$ = ecx
  1427.  
  1428. ; 355  :     }
  1429.  
  1430.   00000    8b ff         npad     2
  1431.  
  1432. ; 270  :     {
  1433.  
  1434.   00002    55         push     ebp
  1435.   00003    8b ec         mov     ebp, esp
  1436.   00005    56         push     esi
  1437.  
  1438. ; 271  :         CONST D3DVERTEXELEMENT9 *pPlace;
  1439. ; 272  : 
  1440. ; 273  :         CD3DXCrackDecl::SetDeclaration(pElementsNew);
  1441.  
  1442.   00006    ff 75 08     push     DWORD PTR _pElementsNew$[ebp]
  1443.   00009    8b f1         mov     esi, ecx
  1444.   0000b    e8 00 00 00 00     call     ?SetDeclaration@CD3DXCrackDecl@@QAEJPBU_D3DVERTEXELEMENT9@@@Z ; CD3DXCrackDecl::SetDeclaration
  1445.  
  1446. ; 274  : 
  1447. ; 275  : #ifdef DEBUG
  1448. ; 276  :         // this class only works for single stream data types
  1449. ; 277  :         pPlace = pElementsNew;
  1450. ; 278  :         while(pPlace->Stream != 0xFF)
  1451. ; 279  :         {
  1452. ; 280  :             GXASSERT(pPlace->Stream == 0);
  1453. ; 281  :             pPlace++;
  1454. ; 282  :         }
  1455. ; 283  : #endif
  1456. ; 284  :         // should be pointing into local copy of declaration
  1457. ; 285  :         pPlace = pElements;
  1458.  
  1459.   00010    8b 06         mov     eax, DWORD PTR [esi]
  1460.   00012    e9 c9 00 00 00     jmp     $L56900
  1461. $L56021:
  1462.  
  1463. ; 288  :         {
  1464. ; 289  :             if (pPlace->UsageIndex == 0 || pPlace->Usage == D3DDECLUSAGE_TEXCOORD || 
  1465. ; 290  :                 pPlace->Usage == D3DDECLUSAGE_COLOR )
  1466.  
  1467.   00017    8a 50 07     mov     dl, BYTE PTR [eax+7]
  1468.   0001a    84 d2         test     dl, dl
  1469.   0001c    74 11         je     SHORT $L56024
  1470.   0001e    8a 48 06     mov     cl, BYTE PTR [eax+6]
  1471.   00021    80 f9 05     cmp     cl, 5
  1472.   00024    74 09         je     SHORT $L56024
  1473.   00026    80 f9 0a     cmp     cl, 10            ; 0000000aH
  1474.   00029    0f 85 ae 00 00
  1475.     00         jne     $L56030
  1476. $L56024:
  1477.  
  1478. ; 291  :             {
  1479. ; 292  :                 switch (pPlace->Usage)
  1480.  
  1481.   0002f    0f b6 48 06     movzx     ecx, BYTE PTR [eax+6]
  1482.   00033    83 e9 00     sub     ecx, 0
  1483.   00036    0f 84 95 00 00
  1484.     00         je     $L56029
  1485.   0003c    49         dec     ecx
  1486.   0003d    0f 84 80 00 00
  1487.     00         je     $L56031
  1488.   00043    49         dec     ecx
  1489.   00044    74 68         je     SHORT $L56033
  1490.   00046    49         dec     ecx
  1491.   00047    74 57         je     SHORT $L56036
  1492.   00049    49         dec     ecx
  1493.   0004a    49         dec     ecx
  1494.   0004b    74 3c         je     SHORT $L56046
  1495.   0004d    83 e9 05     sub     ecx, 5
  1496.   00050    0f 85 87 00 00
  1497.     00         jne     $L56030
  1498.  
  1499. ; 321  : 
  1500. ; 322  :                 case D3DDECLUSAGE_COLOR:
  1501. ; 323  :                     if (pPlace->UsageIndex == 0)
  1502.  
  1503.   00056    84 d2         test     dl, dl
  1504.   00058    75 15         jne     SHORT $L56039
  1505.  
  1506. ; 324  :                     {
  1507. ; 325  :                         if ((pPlace->Type == D3DDECLTYPE_FLOAT4) || (pPlace->Type == D3DDECLTYPE_D3DCOLOR))
  1508.  
  1509.   0005a    8a 48 04     mov     cl, BYTE PTR [eax+4]
  1510.   0005d    80 f9 03     cmp     cl, 3
  1511.   00060    74 05         je     SHORT $L56041
  1512.   00062    80 f9 04     cmp     cl, 4
  1513.   00065    75 76         jne     SHORT $L56030
  1514. $L56041:
  1515.  
  1516. ; 326  :                         {
  1517. ; 327  :                             pDiffuseElement = pPlace;
  1518.  
  1519.   00067    89 86 98 00 00
  1520.     00         mov     DWORD PTR [esi+152], eax
  1521.  
  1522. ; 328  :                         }
  1523. ; 329  :                     }
  1524. ; 330  :                     else
  1525.  
  1526.   0006d    eb 6e         jmp     SHORT $L56030
  1527. $L56039:
  1528.  
  1529. ; 331  :                     if (pPlace->UsageIndex == 1)
  1530.  
  1531.   0006f    80 fa 01     cmp     dl, 1
  1532.   00072    75 69         jne     SHORT $L56030
  1533.  
  1534. ; 332  :                     {
  1535. ; 333  :                         if ((pPlace->Type == D3DDECLTYPE_FLOAT4) || (pPlace->Type == D3DDECLTYPE_D3DCOLOR))
  1536.  
  1537.   00074    8a 48 04     mov     cl, BYTE PTR [eax+4]
  1538.   00077    80 f9 03     cmp     cl, 3
  1539.   0007a    74 05         je     SHORT $L56045
  1540.   0007c    80 f9 04     cmp     cl, 4
  1541.   0007f    75 5c         jne     SHORT $L56030
  1542. $L56045:
  1543.  
  1544. ; 334  :                         {
  1545. ; 335  :                             pSpecularElement = pPlace;
  1546.  
  1547.   00081    89 86 9c 00 00
  1548.     00         mov     DWORD PTR [esi+156], eax
  1549.  
  1550. ; 336  :                         }
  1551. ; 337  :                     }
  1552. ; 338  :                     break;
  1553.  
  1554.   00087    eb 54         jmp     SHORT $L56030
  1555. $L56046:
  1556.  
  1557. ; 339  : 
  1558. ; 340  :                 case D3DDECLUSAGE_TEXCOORD:
  1559. ; 341  :                     if ((pPlace->Type >= D3DDECLTYPE_FLOAT1) && (pPlace->Type <= D3DDECLTYPE_FLOAT4) && (pPlace->UsageIndex < 8))
  1560.  
  1561.   00089    80 78 04 03     cmp     BYTE PTR [eax+4], 3
  1562.   0008d    77 4e         ja     SHORT $L56030
  1563.   0008f    80 fa 08     cmp     dl, 8
  1564.   00092    73 49         jae     SHORT $L56030
  1565.  
  1566. ; 342  :                     {
  1567. ; 343  :                         rgpTextureElements[pPlace->UsageIndex] = pPlace;
  1568.  
  1569.   00094    0f b6 ca     movzx     ecx, dl
  1570.   00097    89 84 8e a0 00
  1571.     00 00         mov     DWORD PTR [esi+ecx*4+160], eax
  1572.  
  1573. ; 344  :                     }
  1574. ; 345  :                     break;
  1575.  
  1576.   0009e    eb 3d         jmp     SHORT $L56030
  1577. $L56036:
  1578.  
  1579. ; 314  : 
  1580. ; 315  :                 case D3DDECLUSAGE_NORMAL:
  1581. ; 316  :                     if (pPlace->Type == D3DDECLTYPE_FLOAT3)
  1582.  
  1583.   000a0    80 78 04 02     cmp     BYTE PTR [eax+4], 2
  1584.   000a4    75 37         jne     SHORT $L56030
  1585.  
  1586. ; 317  :                     {
  1587. ; 318  :                         pNormalElement = pPlace;
  1588.  
  1589.   000a6    89 86 94 00 00
  1590.     00         mov     DWORD PTR [esi+148], eax
  1591.  
  1592. ; 319  :                     }
  1593. ; 320  :                     break;
  1594.  
  1595.   000ac    eb 2f         jmp     SHORT $L56030
  1596. $L56033:
  1597.  
  1598. ; 307  : 
  1599. ; 308  :                 case D3DDECLUSAGE_BLENDINDICES:
  1600. ; 309  :                     if ((pPlace->Type == D3DDECLTYPE_UBYTE4) || (pPlace->Type == D3DDECLTYPE_D3DCOLOR))
  1601.  
  1602.   000ae    8a 48 04     mov     cl, BYTE PTR [eax+4]
  1603.   000b1    80 f9 05     cmp     cl, 5
  1604.   000b4    74 05         je     SHORT $L56035
  1605.   000b6    80 f9 04     cmp     cl, 4
  1606.   000b9    75 22         jne     SHORT $L56030
  1607. $L56035:
  1608.  
  1609. ; 310  :                     {
  1610. ; 311  :                         pIndexElement = pPlace;
  1611.  
  1612.   000bb    89 86 90 00 00
  1613.     00         mov     DWORD PTR [esi+144], eax
  1614.  
  1615. ; 312  :                     }
  1616. ; 313  :                     break;
  1617.  
  1618.   000c1    eb 1a         jmp     SHORT $L56030
  1619. $L56031:
  1620.  
  1621. ; 298  :                     }
  1622. ; 299  :                     break;
  1623. ; 300  : 
  1624. ; 301  :                 case D3DDECLUSAGE_BLENDWEIGHT:
  1625. ; 302  :                     if ((pPlace->Type >= D3DDECLTYPE_FLOAT1) && (pPlace->Type <= D3DDECLTYPE_FLOAT4))
  1626.  
  1627.   000c3    80 78 04 03     cmp     BYTE PTR [eax+4], 3
  1628.   000c7    77 14         ja     SHORT $L56030
  1629.  
  1630. ; 303  :                     {
  1631. ; 304  :                         pWeightElement = pPlace;
  1632.  
  1633.   000c9    89 86 8c 00 00
  1634.     00         mov     DWORD PTR [esi+140], eax
  1635.  
  1636. ; 305  :                     }
  1637. ; 306  :                     break;
  1638.  
  1639.   000cf    eb 0c         jmp     SHORT $L56030
  1640. $L56029:
  1641.  
  1642. ; 293  :                 {
  1643. ; 294  :                 case D3DDECLUSAGE_POSITION:
  1644. ; 295  :                     if (pPlace->Type == D3DDECLTYPE_FLOAT3)
  1645.  
  1646.   000d1    80 78 04 02     cmp     BYTE PTR [eax+4], 2
  1647.   000d5    75 06         jne     SHORT $L56030
  1648.  
  1649. ; 296  :                     {
  1650. ; 297  :                         pPositionElement = pPlace;
  1651.  
  1652.   000d7    89 86 88 00 00
  1653.     00         mov     DWORD PTR [esi+136], eax
  1654. $L56030:
  1655.  
  1656. ; 346  :                 }
  1657. ; 347  :             }
  1658. ; 348  : 
  1659. ; 349  :             pPlace++;
  1660.  
  1661.   000dd    83 c0 08     add     eax, 8
  1662. $L56900:
  1663.  
  1664. ; 286  : 
  1665. ; 287  :         while(pPlace->Stream != 0xFF)
  1666.  
  1667.   000e0    66 81 38 ff 00     cmp     WORD PTR [eax], 255    ; 000000ffH
  1668.   000e5    0f 85 2c ff ff
  1669.     ff         jne     $L56021
  1670.  
  1671. ; 350  :         }
  1672. ; 351  : 
  1673. ; 352  :         m_cBytesPerVertex = D3DXGetDeclVertexSize(pElements,0);
  1674.  
  1675.   000eb    6a 00         push     0
  1676.   000ed    ff 36         push     DWORD PTR [esi]
  1677.   000ef    e8 00 00 00 00     call     _D3DXGetDeclVertexSize@8
  1678.   000f4    89 86 c0 00 00
  1679.     00         mov     DWORD PTR [esi+192], eax
  1680.  
  1681. ; 353  : 
  1682. ; 354  :         return S_OK;
  1683.  
  1684.   000fa    33 c0         xor     eax, eax
  1685.   000fc    5e         pop     esi
  1686.  
  1687. ; 355  :     }
  1688.  
  1689.   000fd    5d         pop     ebp
  1690.   000fe    c2 04 00     ret     4
  1691. ?SetDeclaration@CD3DXCrackDecl1@@QAEJPBU_D3DVERTEXELEMENT9@@@Z ENDP ; CD3DXCrackDecl1::SetDeclaration
  1692. _TEXT    ENDS
  1693. PUBLIC    ??0CAdjacencyOutline@@QAE@XZ            ; CAdjacencyOutline::CAdjacencyOutline
  1694. ; Function compile flags: /Ogs
  1695. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\adjoutline.cpp
  1696. ;    COMDAT ??0CAdjacencyOutline@@QAE@XZ
  1697. _TEXT    SEGMENT
  1698. ??0CAdjacencyOutline@@QAE@XZ PROC NEAR            ; CAdjacencyOutline::CAdjacencyOutline, COMDAT
  1699. ; _this$ = ecx
  1700.  
  1701. ; 38   : }
  1702.  
  1703.   00000    8b ff         npad     2
  1704.   00002    56         push     esi
  1705.  
  1706. ; 37   : {
  1707.  
  1708.   00003    6a 02         push     2
  1709.   00005    8b f1         mov     esi, ecx
  1710.   00007    e8 00 00 00 00     call     ??0DXCrackFVF@@QAE@K@Z    ; DXCrackFVF::DXCrackFVF
  1711.   0000c    33 c0         xor     eax, eax
  1712.   0000e    89 46 40     mov     DWORD PTR [esi+64], eax
  1713.   00011    89 46 44     mov     DWORD PTR [esi+68], eax
  1714.   00014    89 46 48     mov     DWORD PTR [esi+72], eax
  1715.   00017    89 46 4c     mov     DWORD PTR [esi+76], eax
  1716.   0001a    89 46 50     mov     DWORD PTR [esi+80], eax
  1717.   0001d    89 46 54     mov     DWORD PTR [esi+84], eax
  1718.   00020    89 46 58     mov     DWORD PTR [esi+88], eax
  1719.  
  1720. ; 38   : }
  1721.  
  1722.   00023    8b c6         mov     eax, esi
  1723.   00025    5e         pop     esi
  1724.   00026    c3         ret     0
  1725. ??0CAdjacencyOutline@@QAE@XZ ENDP            ; CAdjacencyOutline::CAdjacencyOutline
  1726. _TEXT    ENDS
  1727. PUBLIC    __real@3eaaaaab
  1728. PUBLIC    ?AppendPoint@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIPAE2AAI@Z ; CAdjacencyOutline::AppendPoint
  1729. EXTRN    __alloca_probe:NEAR
  1730. ;    COMDAT __real@3eaaaaab
  1731. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\gxcrackfvf.h
  1732. CONST    SEGMENT
  1733. __real@3eaaaaab DD 03eaaaaabr            ; 0.333333
  1734. ; Function compile flags: /Ogs
  1735. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\adjoutline.cpp
  1736. CONST    ENDS
  1737. ;    COMDAT ?AppendPoint@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIPAE2AAI@Z
  1738. _TEXT    SEGMENT
  1739. _this$ = -8                        ; size = 4
  1740. tv202 = -4                        ; size = 4
  1741. _cdMesh$ = 8                        ; size = 4
  1742. _pwFace$ = 12                        ; size = 4
  1743. _pvMeshPoints$ = 16                    ; size = 4
  1744. _pvLinePoints$ = 20                    ; size = 4
  1745. _iCurPoint$ = 24                    ; size = 4
  1746. ?AppendPoint@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIPAE2AAI@Z PROC NEAR ; CAdjacencyOutline::AppendPoint, COMDAT
  1747. ; _this$ = ecx
  1748.  
  1749. ; 89   : }
  1750.  
  1751.   00000    8b ff         npad     2
  1752.  
  1753. ; 57   : {
  1754.  
  1755.   00002    55         push     ebp
  1756.   00003    8b ec         mov     ebp, esp
  1757.   00005    51         push     ecx
  1758.   00006    51         push     ecx
  1759.  
  1760. ; 58   :     UINT iPoint;
  1761. ; 59   :     PVOID pvPoint;
  1762. ; 60   :     DWORD cFloats;
  1763. ; 61   :     DWORD iFloat;
  1764. ; 62   :     float *pfTemp;
  1765. ; 63   : 
  1766. ; 64   :     GXASSERT(m_cfvf.CWeights() == cdMesh.CWeights());
  1767. ; 65   : 
  1768. ; 66   :     cFloats = 3 /*vector*/ + cdMesh.CWeights();
  1769.  
  1770.   00007    8b 45 08     mov     eax, DWORD PTR _cdMesh$[ebp]
  1771.   0000a    8b 80 8c 00 00
  1772.     00         mov     eax, DWORD PTR [eax+140]
  1773.   00010    85 c0         test     eax, eax
  1774.   00012    53         push     ebx
  1775.   00013    56         push     esi
  1776.   00014    57         push     edi
  1777.   00015    89 4d f8     mov     DWORD PTR _this$[ebp], ecx
  1778.   00018    74 05         je     SHORT $L56909
  1779. $L56908:
  1780.   0001a    0f b6 40 04     movzx     eax, BYTE PTR [eax+4]
  1781.   0001e    40         inc     eax
  1782. $L56909:
  1783.   0001f    8d 70 03     lea     esi, DWORD PTR [eax+3]
  1784.  
  1785. ; 67   : 
  1786. ; 68   :     pfTemp = (float*)_alloca(cFloats * sizeof(float));
  1787.  
  1788.   00022    8b fe         mov     edi, esi
  1789.   00024    c1 e7 02     shl     edi, 2
  1790.   00027    8b c7         mov     eax, edi
  1791.   00029    83 c0 03     add     eax, 3
  1792.   0002c    83 e0 fc     and     eax, -4            ; fffffffcH
  1793.   0002f    89 7d fc     mov     DWORD PTR tv202[ebp], edi
  1794.   00032    e8 00 00 00 00     call     __alloca_probe
  1795.  
  1796. ; 69   :     memset(pfTemp, 0, cFloats * sizeof(float));
  1797.  
  1798.   00037    8b cf         mov     ecx, edi
  1799.   00039    8b d9         mov     ebx, ecx
  1800.   0003b    c1 e9 02     shr     ecx, 2
  1801.   0003e    8b d4         mov     edx, esp
  1802.   00040    33 c0         xor     eax, eax
  1803.   00042    8b fa         mov     edi, edx
  1804.   00044    f3 ab         rep stosd
  1805.   00046    8b cb         mov     ecx, ebx
  1806.   00048    83 e1 03     and     ecx, 3
  1807.   0004b    f3 aa         rep stosb
  1808.  
  1809. ; 70   : 
  1810. ; 71   :     for (iPoint = 0; iPoint < 3; iPoint++)
  1811.  
  1812.   0004d    33 ff         xor     edi, edi
  1813. $L56399:
  1814.  
  1815. ; 72   :     {
  1816. ; 73   :         pvPoint = cdMesh.GetArrayElem(pvMeshPoints, pwFace[iPoint]);
  1817.  
  1818.   0004f    8b 45 0c     mov     eax, DWORD PTR _pwFace$[ebp]
  1819.   00052    8b 04 b8     mov     eax, DWORD PTR [eax+edi*4]
  1820.   00055    8b 4d 08     mov     ecx, DWORD PTR _cdMesh$[ebp]
  1821.   00058    0f af 81 c0 00
  1822.     00 00         imul     eax, DWORD PTR [ecx+192]
  1823.   0005f    03 45 10     add     eax, DWORD PTR _pvMeshPoints$[ebp]
  1824.  
  1825. ; 74   :         for (iFloat = 0; iFloat < cFloats; iFloat++)
  1826.  
  1827.   00062    85 f6         test     esi, esi
  1828.   00064    76 13         jbe     SHORT $L56400
  1829.   00066    8b ca         mov     ecx, edx
  1830.   00068    2b c2         sub     eax, edx
  1831.   0006a    8b de         mov     ebx, esi
  1832. $L56402:
  1833.  
  1834. ; 75   :         {
  1835. ; 76   :             pfTemp[iFloat] += ((float*)pvPoint)[iFloat];
  1836.  
  1837.   0006c    d9 04 08     fld     DWORD PTR [eax+ecx]
  1838.   0006f    d8 01         fadd     DWORD PTR [ecx]
  1839.   00071    d9 19         fstp     DWORD PTR [ecx]
  1840.   00073    83 c1 04     add     ecx, 4
  1841.   00076    4b         dec     ebx
  1842.   00077    75 f3         jne     SHORT $L56402
  1843. $L56400:
  1844.  
  1845. ; 70   : 
  1846. ; 71   :     for (iPoint = 0; iPoint < 3; iPoint++)
  1847.  
  1848.   00079    47         inc     edi
  1849.   0007a    83 ff 03     cmp     edi, 3
  1850.   0007d    72 d0         jb     SHORT $L56399
  1851.  
  1852. ; 77   :         }
  1853. ; 78   :     }
  1854. ; 79   : 
  1855. ; 80   :     for (iFloat = 0; iFloat < cFloats; iFloat++)
  1856.  
  1857.   0007f    33 c0         xor     eax, eax
  1858.   00081    85 f6         test     esi, esi
  1859.   00083    76 11         jbe     SHORT $L56408
  1860. $L56406:
  1861.  
  1862. ; 81   :     {
  1863. ; 82   :         pfTemp[iFloat] /= 3.0f;
  1864.  
  1865.   00085    d9 04 82     fld     DWORD PTR [edx+eax*4]
  1866.   00088    d8 0d 00 00 00
  1867.     00         fmul     DWORD PTR __real@3eaaaaab
  1868.   0008e    d9 1c 82     fstp     DWORD PTR [edx+eax*4]
  1869.   00091    40         inc     eax
  1870.   00092    3b c6         cmp     eax, esi
  1871.   00094    72 ef         jb     SHORT $L56406
  1872. $L56408:
  1873.  
  1874. ; 83   :     }
  1875. ; 84   : 
  1876. ; 85   :     pvPoint = m_cfvf.GetArrayElem(pvLinePoints, iCurPoint);
  1877.  
  1878.   00096    8b 45 f8     mov     eax, DWORD PTR _this$[ebp]
  1879.   00099    8b 78 04     mov     edi, DWORD PTR [eax+4]
  1880.   0009c    8b 45 18     mov     eax, DWORD PTR _iCurPoint$[ebp]
  1881.   0009f    0f af 38     imul     edi, DWORD PTR [eax]
  1882.  
  1883. ; 86   :     memcpy(pvPoint, pfTemp, sizeof(float) * cFloats);
  1884.  
  1885.   000a2    8b 4d fc     mov     ecx, DWORD PTR tv202[ebp]
  1886.   000a5    03 7d 14     add     edi, DWORD PTR _pvLinePoints$[ebp]
  1887.   000a8    8b f2         mov     esi, edx
  1888.   000aa    8b d1         mov     edx, ecx
  1889.   000ac    c1 e9 02     shr     ecx, 2
  1890.   000af    f3 a5         rep movsd
  1891.   000b1    8b ca         mov     ecx, edx
  1892.   000b3    83 e1 03     and     ecx, 3
  1893.   000b6    f3 a4         rep movsb
  1894.  
  1895. ; 87   : 
  1896. ; 88   :     iCurPoint += 1;
  1897.  
  1898.   000b8    ff 00         inc     DWORD PTR [eax]
  1899.  
  1900. ; 89   : }
  1901.  
  1902.   000ba    8d 65 ec     lea     esp, DWORD PTR [ebp-20]
  1903.   000bd    5f         pop     edi
  1904.   000be    5e         pop     esi
  1905.   000bf    5b         pop     ebx
  1906.   000c0    c9         leave
  1907.   000c1    c2 14 00     ret     20            ; 00000014H
  1908. ?AppendPoint@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIPAE2AAI@Z ENDP ; CAdjacencyOutline::AppendPoint
  1909. _TEXT    ENDS
  1910. PUBLIC    ?AppendMidpoint@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z ; CAdjacencyOutline::AppendMidpoint
  1911. PUBLIC    __real@3f000000
  1912. ;    COMDAT __real@3f000000
  1913. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\gxcrackfvf.h
  1914. CONST    SEGMENT
  1915. __real@3f000000 DD 03f000000r            ; 0.5
  1916. ; Function compile flags: /Ogs
  1917. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\adjoutline.cpp
  1918. CONST    ENDS
  1919. ;    COMDAT ?AppendMidpoint@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z
  1920. _TEXT    SEGMENT
  1921. _this$ = -8                        ; size = 4
  1922. tv234 = -4                        ; size = 4
  1923. _pfTemp$ = 8                        ; size = 4
  1924. _cdMesh$ = 8                        ; size = 4
  1925. tv187 = 12                        ; size = 4
  1926. _pwFace1$ = 12                        ; size = 4
  1927. tv317 = 16                        ; size = 4
  1928. _iEdge$ = 16                        ; size = 4
  1929. _pvMeshPoints$ = 20                    ; size = 4
  1930. _pvLinePoints$ = 24                    ; size = 4
  1931. _iCurPoint$ = 28                    ; size = 4
  1932. ?AppendMidpoint@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z PROC NEAR ; CAdjacencyOutline::AppendMidpoint, COMDAT
  1933. ; _this$ = ecx
  1934.  
  1935. ; 131  : }
  1936.  
  1937.   00000    8b ff         npad     2
  1938.  
  1939. ; 101  : {
  1940.  
  1941.   00002    55         push     ebp
  1942.   00003    8b ec         mov     ebp, esp
  1943.   00005    51         push     ecx
  1944.   00006    51         push     ecx
  1945.   00007    53         push     ebx
  1946.   00008    56         push     esi
  1947.  
  1948. ; 102  :     PVOID pvPoint;
  1949. ; 103  :     DWORD cFloats;
  1950. ; 104  :     DWORD iFloat;
  1951. ; 105  :     float *pfTemp;
  1952. ; 106  : 
  1953. ; 107  :     GXASSERT(m_cfvf.CWeights() == cdMesh.CWeights());
  1954. ; 108  : 
  1955. ; 109  :     cFloats = 3 /*vector*/ + cdMesh.CWeights();
  1956.  
  1957.   00009    8b 75 08     mov     esi, DWORD PTR _cdMesh$[ebp]
  1958.   0000c    8b 86 8c 00 00
  1959.     00         mov     eax, DWORD PTR [esi+140]
  1960.   00012    85 c0         test     eax, eax
  1961.   00014    57         push     edi
  1962.   00015    89 4d f8     mov     DWORD PTR _this$[ebp], ecx
  1963.   00018    74 05         je     SHORT $L56933
  1964. $L56932:
  1965.   0001a    0f b6 40 04     movzx     eax, BYTE PTR [eax+4]
  1966.   0001e    40         inc     eax
  1967. $L56933:
  1968.   0001f    8d 78 03     lea     edi, DWORD PTR [eax+3]
  1969.  
  1970. ; 110  : 
  1971. ; 111  :     pfTemp = (float*)_alloca(cFloats * sizeof(float));
  1972.  
  1973.   00022    8b c7         mov     eax, edi
  1974.   00024    c1 e0 02     shl     eax, 2
  1975.   00027    89 45 fc     mov     DWORD PTR tv234[ebp], eax
  1976.   0002a    83 c0 03     add     eax, 3
  1977.   0002d    83 e0 fc     and     eax, -4            ; fffffffcH
  1978.   00030    e8 00 00 00 00     call     __alloca_probe
  1979.  
  1980. ; 112  : 
  1981. ; 113  :     pvPoint = cdMesh.GetArrayElem(pvMeshPoints, pwFace1[iEdge]);
  1982.  
  1983.   00035    8b 4d 0c     mov     ecx, DWORD PTR _pwFace1$[ebp]
  1984.   00038    8b 55 10     mov     edx, DWORD PTR _iEdge$[ebp]
  1985.   0003b    8b 04 91     mov     eax, DWORD PTR [ecx+edx*4]
  1986.   0003e    0f af 86 c0 00
  1987.     00 00         imul     eax, DWORD PTR [esi+192]
  1988.   00045    03 45 14     add     eax, DWORD PTR _pvMeshPoints$[ebp]
  1989.  
  1990. ; 114  :     for (iFloat = 0; iFloat < cFloats; iFloat++)
  1991.  
  1992.   00048    85 ff         test     edi, edi
  1993.   0004a    8b dc         mov     ebx, esp
  1994.   0004c    89 5d 08     mov     DWORD PTR _pfTemp$[ebp], ebx
  1995.   0004f    76 1a         jbe     SHORT $L56428
  1996.   00051    2b c4         sub     eax, esp
  1997.   00053    89 45 10     mov     DWORD PTR tv317[ebp], eax
  1998.   00056    89 7d 0c     mov     DWORD PTR tv187[ebp], edi
  1999.   00059    eb 03         jmp     SHORT $L56426
  2000. $L56951:
  2001.  
  2002. ; 102  :     PVOID pvPoint;
  2003. ; 103  :     DWORD cFloats;
  2004. ; 104  :     DWORD iFloat;
  2005. ; 105  :     float *pfTemp;
  2006. ; 106  : 
  2007. ; 107  :     GXASSERT(m_cfvf.CWeights() == cdMesh.CWeights());
  2008. ; 108  : 
  2009. ; 109  :     cFloats = 3 /*vector*/ + cdMesh.CWeights();
  2010.  
  2011.   0005b    8b 45 10     mov     eax, DWORD PTR tv317[ebp]
  2012. $L56426:
  2013.  
  2014. ; 115  :     {
  2015. ; 116  :         pfTemp[iFloat] = ((float*)pvPoint)[iFloat];
  2016.  
  2017.   0005e    d9 04 18     fld     DWORD PTR [eax+ebx]
  2018.   00061    d9 1b         fstp     DWORD PTR [ebx]
  2019.   00063    83 c3 04     add     ebx, 4
  2020.   00066    ff 4d 0c     dec     DWORD PTR tv187[ebp]
  2021.   00069    75 f0         jne     SHORT $L56951
  2022. $L56428:
  2023.  
  2024. ; 117  :     }
  2025. ; 118  : 
  2026. ; 119  :     pvPoint = cdMesh.GetArrayElem(pvMeshPoints, pwFace1[(iEdge+1)%3]);
  2027.  
  2028.   0006b    8d 42 01     lea     eax, DWORD PTR [edx+1]
  2029.   0006e    6a 03         push     3
  2030.   00070    33 d2         xor     edx, edx
  2031.   00072    5b         pop     ebx
  2032.   00073    f7 f3         div     ebx
  2033.   00075    8b 04 91     mov     eax, DWORD PTR [ecx+edx*4]
  2034.   00078    0f af 86 c0 00
  2035.     00 00         imul     eax, DWORD PTR [esi+192]
  2036.   0007f    03 45 14     add     eax, DWORD PTR _pvMeshPoints$[ebp]
  2037.  
  2038. ; 120  :     for (iFloat = 0; iFloat < cFloats; iFloat++)
  2039.  
  2040.   00082    85 ff         test     edi, edi
  2041.   00084    76 18         jbe     SHORT $L56432
  2042.   00086    8b 4d 08     mov     ecx, DWORD PTR _pfTemp$[ebp]
  2043.   00089    2b c1         sub     eax, ecx
  2044. $L56430:
  2045.  
  2046. ; 121  :     {
  2047. ; 122  :         pfTemp[iFloat] += ((float*)pvPoint)[iFloat];
  2048. ; 123  : 
  2049. ; 124  :         pfTemp[iFloat] /= 2.0f;
  2050.  
  2051.   0008b    d9 04 01     fld     DWORD PTR [ecx+eax]
  2052.   0008e    d8 01         fadd     DWORD PTR [ecx]
  2053.   00090    d8 0d 00 00 00
  2054.     00         fmul     DWORD PTR __real@3f000000
  2055.   00096    d9 19         fstp     DWORD PTR [ecx]
  2056.   00098    83 c1 04     add     ecx, 4
  2057.   0009b    4f         dec     edi
  2058.   0009c    75 ed         jne     SHORT $L56430
  2059. $L56432:
  2060.  
  2061. ; 125  :     }
  2062. ; 126  : 
  2063. ; 127  :     pvPoint = m_cfvf.GetArrayElem(pvLinePoints, iCurPoint);
  2064.  
  2065.   0009e    8b 45 f8     mov     eax, DWORD PTR _this$[ebp]
  2066.   000a1    8b 78 04     mov     edi, DWORD PTR [eax+4]
  2067.   000a4    8b 45 1c     mov     eax, DWORD PTR _iCurPoint$[ebp]
  2068.   000a7    0f af 38     imul     edi, DWORD PTR [eax]
  2069.  
  2070. ; 128  :     memcpy(pvPoint, pfTemp, sizeof(float) * cFloats);
  2071.  
  2072.   000aa    8b 4d fc     mov     ecx, DWORD PTR tv234[ebp]
  2073.   000ad    03 7d 18     add     edi, DWORD PTR _pvLinePoints$[ebp]
  2074.   000b0    8b 75 08     mov     esi, DWORD PTR _pfTemp$[ebp]
  2075.   000b3    8b d1         mov     edx, ecx
  2076.   000b5    c1 e9 02     shr     ecx, 2
  2077.   000b8    f3 a5         rep movsd
  2078.   000ba    8b ca         mov     ecx, edx
  2079.   000bc    83 e1 03     and     ecx, 3
  2080.   000bf    f3 a4         rep movsb
  2081.  
  2082. ; 129  : 
  2083. ; 130  :     iCurPoint += 1;
  2084.  
  2085.   000c1    ff 00         inc     DWORD PTR [eax]
  2086.  
  2087. ; 131  : }
  2088.  
  2089.   000c3    8d 65 ec     lea     esp, DWORD PTR [ebp-20]
  2090.   000c6    5f         pop     edi
  2091.   000c7    5e         pop     esi
  2092.   000c8    5b         pop     ebx
  2093.   000c9    c9         leave
  2094.   000ca    c2 18 00     ret     24            ; 00000018H
  2095. ?AppendMidpoint@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z ENDP ; CAdjacencyOutline::AppendMidpoint
  2096. _TEXT    ENDS
  2097. PUBLIC    ?AppendPointSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z ; CAdjacencyOutline::AppendPointSkinned
  2098. ; Function compile flags: /Ogs
  2099. ;    COMDAT ?AppendPointSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z
  2100. _TEXT    SEGMENT
  2101. _vAvg$ = -16                        ; size = 12
  2102. _this$ = -4                        ; size = 4
  2103. _cdMesh$ = 8                        ; size = 4
  2104. _pwFace1$ = 12                        ; size = 4
  2105. _iEdge$ = 16                        ; size = 4
  2106. _pvMeshPoints$ = 20                    ; size = 4
  2107. _pvDestPoint$ = 24                    ; size = 4
  2108. _pvLinePoints$ = 24                    ; size = 4
  2109. _iCurPoint$ = 28                    ; size = 4
  2110. ?AppendPointSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z PROC NEAR ; CAdjacencyOutline::AppendPointSkinned, COMDAT
  2111. ; _this$ = ecx
  2112.  
  2113. ; 257  : }
  2114.  
  2115.   00000    8b ff         npad     2
  2116.  
  2117. ; 218  : {
  2118.  
  2119.   00002    55         push     ebp
  2120.   00003    8b ec         mov     ebp, esp
  2121.   00005    83 ec 10     sub     esp, 16            ; 00000010H
  2122.  
  2123. ; 219  :     PBYTE pvDestPoint;
  2124. ; 220  :     PBYTE pvPoint;
  2125. ; 221  :     D3DXVECTOR3 vAvg(1.0f/3.0f,1.0f/3.0f,1.0f/3.0f);
  2126. ; 222  : 
  2127. ; 223  :     pvDestPoint = m_cfvf.GetArrayElem(pvLinePoints, iCurPoint);
  2128.  
  2129.   00008    8b 51 04     mov     edx, DWORD PTR [ecx+4]
  2130.   0000b    d9 05 00 00 00
  2131.     00         fld     DWORD PTR __real@3eaaaaab
  2132.   00011    8b 45 1c     mov     eax, DWORD PTR _iCurPoint$[ebp]
  2133.   00014    d9 55 f0     fst     DWORD PTR _vAvg$[ebp]
  2134.   00017    0f af 10     imul     edx, DWORD PTR [eax]
  2135.   0001a    d9 55 f4     fst     DWORD PTR _vAvg$[ebp+4]
  2136.   0001d    d9 5d f8     fstp     DWORD PTR _vAvg$[ebp+8]
  2137.  
  2138. ; 224  : 
  2139. ; 225  :     // Point 0 - first point on edge shared with another triangle
  2140. ; 226  :     pvPoint = cdMesh.GetArrayElem(pvMeshPoints, pwFace1[iEdge]);
  2141.  
  2142.   00020    8b 45 0c     mov     eax, DWORD PTR _pwFace1$[ebp]
  2143.   00023    03 55 18     add     edx, DWORD PTR _pvLinePoints$[ebp]
  2144.   00026    53         push     ebx
  2145.   00027    8b 5d 08     mov     ebx, DWORD PTR _cdMesh$[ebp]
  2146.   0002a    56         push     esi
  2147.   0002b    8b 75 10     mov     esi, DWORD PTR _iEdge$[ebp]
  2148.   0002e    8b 04 b0     mov     eax, DWORD PTR [eax+esi*4]
  2149.   00031    0f af 83 c0 00
  2150.     00 00         imul     eax, DWORD PTR [ebx+192]
  2151.  
  2152. ; 227  : 
  2153. ; 228  :     // first position goes in standard position spot
  2154. ; 229  :     m_cfvf.SetPosition(pvDestPoint, cdMesh.PvGetPosition(pvPoint));
  2155.  
  2156.   00038    8b b3 88 00 00
  2157.     00         mov     esi, DWORD PTR [ebx+136]
  2158.   0003e    0f b7 76 02     movzx     esi, WORD PTR [esi+2]
  2159.   00042    03 45 14     add     eax, DWORD PTR _pvMeshPoints$[ebp]
  2160.   00045    57         push     edi
  2161.   00046    03 f0         add     esi, eax
  2162.   00048    8b fa         mov     edi, edx
  2163.   0004a    a5         movsd
  2164.   0004b    a5         movsd
  2165.   0004c    a5         movsd
  2166.  
  2167. ; 230  : 
  2168. ; 231  :     // first set of weights go in standard spot - expand to standard length
  2169. ; 232  :     CopyWeights(cdMesh.PfGetWeights(pvPoint), cdMesh.CWeights(), m_cfvf.PfGetWeights(pvDestPoint), m_cfvf.CWeights());
  2170.  
  2171.   0004d    8b 71 38     mov     esi, DWORD PTR [ecx+56]
  2172.   00050    89 4d fc     mov     DWORD PTR _this$[ebp], ecx
  2173.   00053    8b 8b 8c 00 00
  2174.     00         mov     ecx, DWORD PTR [ebx+140]
  2175.   00059    85 c9         test     ecx, ecx
  2176.   0005b    89 55 18     mov     DWORD PTR _pvDestPoint$[ebp], edx
  2177.   0005e    75 04         jne     SHORT $L56980
  2178.   00060    33 ff         xor     edi, edi
  2179.   00062    eb 05         jmp     SHORT $L56981
  2180. $L56980:
  2181.   00064    0f b6 79 04     movzx     edi, BYTE PTR [ecx+4]
  2182.   00068    47         inc     edi
  2183. $L56981:
  2184.   00069    0f b7 49 02     movzx     ecx, WORD PTR [ecx+2]
  2185.   0006d    56         push     esi
  2186.   0006e    83 c2 0c     add     edx, 12            ; 0000000cH
  2187.   00071    52         push     edx
  2188.   00072    03 c8         add     ecx, eax
  2189.   00074    57         push     edi
  2190.   00075    51         push     ecx
  2191.   00076    e8 00 00 00 00     call     ?CopyWeights@@YAXPAMK0K@Z ; CopyWeights
  2192.  
  2193. ; 233  : 
  2194. ; 234  :     // Point 1 - other point on edge shared with another triangle
  2195. ; 235  :     pvPoint = cdMesh.GetArrayElem(pvMeshPoints, pwFace1[(iEdge+1)%3]);
  2196.  
  2197.   0007b    8b 45 10     mov     eax, DWORD PTR _iEdge$[ebp]
  2198.   0007e    83 c4 10     add     esp, 16            ; 00000010H
  2199.   00081    6a 03         push     3
  2200.   00083    40         inc     eax
  2201.   00084    59         pop     ecx
  2202.   00085    33 d2         xor     edx, edx
  2203.   00087    f7 f1         div     ecx
  2204.   00089    8b 45 0c     mov     eax, DWORD PTR _pwFace1$[ebp]
  2205.  
  2206. ; 236  : 
  2207. ; 237  :     // second position goes in first texture coord
  2208. ; 238  :     m_cfvf.SetTexCoord(pvDestPoint, 0, cdMesh.PvGetPosition(pvPoint));
  2209.  
  2210.   0008c    8b 7d fc     mov     edi, DWORD PTR _this$[ebp]
  2211.   0008f    8b cf         mov     ecx, edi
  2212.   00091    8b 34 90     mov     esi, DWORD PTR [eax+edx*4]
  2213.   00094    0f af b3 c0 00
  2214.     00 00         imul     esi, DWORD PTR [ebx+192]
  2215.   0009b    8b 83 88 00 00
  2216.     00         mov     eax, DWORD PTR [ebx+136]
  2217.   000a1    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  2218.   000a5    03 75 14     add     esi, DWORD PTR _pvMeshPoints$[ebp]
  2219.   000a8    03 c6         add     eax, esi
  2220.   000aa    50         push     eax
  2221.   000ab    6a 00         push     0
  2222.   000ad    ff 75 18     push     DWORD PTR _pvDestPoint$[ebp]
  2223.   000b0    e8 00 00 00 00     call     ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetTexCoord
  2224.  
  2225. ; 239  : 
  2226. ; 240  :     // second set of weights go in second texture coord- expand to standard length
  2227. ; 241  :     CopyWeights(cdMesh.PfGetWeights(pvPoint), cdMesh.CWeights(), (float*)m_cfvf.PxyzwGetTexCoord(pvDestPoint, 1), m_cfvf.CWeights());
  2228.  
  2229.   000b5    8b 83 8c 00 00
  2230.     00         mov     eax, DWORD PTR [ebx+140]
  2231.   000bb    85 c0         test     eax, eax
  2232.   000bd    8b 4f 38     mov     ecx, DWORD PTR [edi+56]
  2233.   000c0    75 04         jne     SHORT $L57004
  2234.   000c2    33 d2         xor     edx, edx
  2235.   000c4    eb 05         jmp     SHORT $L57005
  2236. $L57004:
  2237.   000c6    0f b6 50 04     movzx     edx, BYTE PTR [eax+4]
  2238.   000ca    42         inc     edx
  2239. $L57005:
  2240.   000cb    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  2241.   000cf    51         push     ecx
  2242.   000d0    8b 4f 1c     mov     ecx, DWORD PTR [edi+28]
  2243.   000d3    03 4d 18     add     ecx, DWORD PTR _pvDestPoint$[ebp]
  2244.   000d6    03 c6         add     eax, esi
  2245.   000d8    51         push     ecx
  2246.   000d9    52         push     edx
  2247.   000da    50         push     eax
  2248.   000db    e8 00 00 00 00     call     ?CopyWeights@@YAXPAMK0K@Z ; CopyWeights
  2249.  
  2250. ; 242  : 
  2251. ; 243  :     // Point 2 - point NOT on edge shared with another triangle
  2252. ; 244  :     pvPoint = cdMesh.GetArrayElem(pvMeshPoints, pwFace1[(iEdge+2)%3]);
  2253.  
  2254.   000e0    8b 45 10     mov     eax, DWORD PTR _iEdge$[ebp]
  2255.   000e3    83 c4 10     add     esp, 16            ; 00000010H
  2256.   000e6    6a 03         push     3
  2257.   000e8    83 c0 02     add     eax, 2
  2258.   000eb    59         pop     ecx
  2259.   000ec    33 d2         xor     edx, edx
  2260.   000ee    f7 f1         div     ecx
  2261.   000f0    8b 45 0c     mov     eax, DWORD PTR _pwFace1$[ebp]
  2262.  
  2263. ; 245  : 
  2264. ; 246  :     // third position goes in the third texture coordinate
  2265. ; 247  :     m_cfvf.SetTexCoord(pvDestPoint, 2, cdMesh.PvGetPosition(pvPoint));
  2266.  
  2267.   000f3    8b cf         mov     ecx, edi
  2268.   000f5    8b 34 90     mov     esi, DWORD PTR [eax+edx*4]
  2269.   000f8    0f af b3 c0 00
  2270.     00 00         imul     esi, DWORD PTR [ebx+192]
  2271.   000ff    8b 83 88 00 00
  2272.     00         mov     eax, DWORD PTR [ebx+136]
  2273.   00105    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  2274.   00109    03 75 14     add     esi, DWORD PTR _pvMeshPoints$[ebp]
  2275.   0010c    03 c6         add     eax, esi
  2276.   0010e    50         push     eax
  2277.   0010f    6a 02         push     2
  2278.   00111    ff 75 18     push     DWORD PTR _pvDestPoint$[ebp]
  2279.   00114    e8 00 00 00 00     call     ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetTexCoord
  2280.  
  2281. ; 248  : 
  2282. ; 249  :     // third set of weights go in fourth texture coord- expand to standard length
  2283. ; 250  :     CopyWeights(cdMesh.PfGetWeights(pvPoint), cdMesh.CWeights(), (float*)m_cfvf.PxyzwGetTexCoord(pvDestPoint, 3), m_cfvf.CWeights());
  2284.  
  2285.   00119    8b 9b 8c 00 00
  2286.     00         mov     ebx, DWORD PTR [ebx+140]
  2287.   0011f    85 db         test     ebx, ebx
  2288.   00121    8b 47 38     mov     eax, DWORD PTR [edi+56]
  2289.   00124    75 04         jne     SHORT $L57027
  2290.   00126    33 c9         xor     ecx, ecx
  2291.   00128    eb 05         jmp     SHORT $L57028
  2292. $L57027:
  2293.   0012a    0f b6 4b 04     movzx     ecx, BYTE PTR [ebx+4]
  2294.   0012e    41         inc     ecx
  2295. $L57028:
  2296.   0012f    50         push     eax
  2297.   00130    8b 47 24     mov     eax, DWORD PTR [edi+36]
  2298.   00133    03 45 18     add     eax, DWORD PTR _pvDestPoint$[ebp]
  2299.   00136    50         push     eax
  2300.   00137    0f b7 43 02     movzx     eax, WORD PTR [ebx+2]
  2301.   0013b    51         push     ecx
  2302.   0013c    03 c6         add     eax, esi
  2303.   0013e    50         push     eax
  2304.   0013f    e8 00 00 00 00     call     ?CopyWeights@@YAXPAMK0K@Z ; CopyWeights
  2305.   00144    83 c4 10     add     esp, 16            ; 00000010H
  2306.  
  2307. ; 251  : 
  2308. ; 252  : 
  2309. ; 253  :     // the third position should be added in
  2310. ; 254  :     m_cfvf.SetTexCoord(pvDestPoint, 4, &vAvg);
  2311.  
  2312.   00147    8d 45 f0     lea     eax, DWORD PTR _vAvg$[ebp]
  2313.   0014a    50         push     eax
  2314.   0014b    6a 04         push     4
  2315.   0014d    ff 75 18     push     DWORD PTR _pvDestPoint$[ebp]
  2316.   00150    8b cf         mov     ecx, edi
  2317.   00152    e8 00 00 00 00     call     ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetTexCoord
  2318.  
  2319. ; 255  : 
  2320. ; 256  :     iCurPoint += 1;
  2321.  
  2322.   00157    8b 45 1c     mov     eax, DWORD PTR _iCurPoint$[ebp]
  2323.   0015a    ff 00         inc     DWORD PTR [eax]
  2324.   0015c    5f         pop     edi
  2325.   0015d    5e         pop     esi
  2326.   0015e    5b         pop     ebx
  2327.  
  2328. ; 257  : }
  2329.  
  2330.   0015f    c9         leave
  2331.   00160    c2 18 00     ret     24            ; 00000018H
  2332. ?AppendPointSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z ENDP ; CAdjacencyOutline::AppendPointSkinned
  2333. _TEXT    ENDS
  2334. PUBLIC    ?AppendMidpointSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z ; CAdjacencyOutline::AppendMidpointSkinned
  2335. ; Function compile flags: /Ogs
  2336. ;    COMDAT ?AppendMidpointSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z
  2337. _TEXT    SEGMENT
  2338. _vMidPoint$ = -12                    ; size = 12
  2339. _cdMesh$ = 8                        ; size = 4
  2340. _pwFace1$ = 12                        ; size = 4
  2341. _iEdge$ = 16                        ; size = 4
  2342. _pvMeshPoints$ = 20                    ; size = 4
  2343. _pvLinePoints$ = 24                    ; size = 4
  2344. _iCurPoint$ = 28                    ; size = 4
  2345. ?AppendMidpointSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z PROC NEAR ; CAdjacencyOutline::AppendMidpointSkinned, COMDAT
  2346. ; _this$ = ecx
  2347.  
  2348. ; 279  : }
  2349.  
  2350.   00000    8b ff         npad     2
  2351.  
  2352. ; 269  : {
  2353.  
  2354.   00002    55         push     ebp
  2355.   00003    8b ec         mov     ebp, esp
  2356.   00005    83 ec 0c     sub     esp, 12            ; 0000000cH
  2357.  
  2358. ; 270  :     PBYTE pvDestPoint;
  2359. ; 271  :     D3DXVECTOR3 vMidPoint(0.5f, 0.5f, 0.0f);
  2360. ; 272  : 
  2361. ; 273  :     pvDestPoint = m_cfvf.GetArrayElem(pvLinePoints, iCurPoint);
  2362.  
  2363.   00008    8b 45 1c     mov     eax, DWORD PTR _iCurPoint$[ebp]
  2364.   0000b    d9 05 00 00 00
  2365.     00         fld     DWORD PTR __real@3f000000
  2366.   00011    56         push     esi
  2367.   00012    d9 55 f4     fst     DWORD PTR _vMidPoint$[ebp]
  2368.   00015    57         push     edi
  2369.   00016    d9 5d f8     fstp     DWORD PTR _vMidPoint$[ebp+4]
  2370.  
  2371. ; 274  : 
  2372. ; 275  :     AppendPointSkinned(cdMesh, pwFace1, iEdge, pvMeshPoints, pvLinePoints, iCurPoint);
  2373.  
  2374.   00019    50         push     eax
  2375.   0001a    d9 ee         fldz
  2376.   0001c    ff 75 18     push     DWORD PTR _pvLinePoints$[ebp]
  2377.   0001f    d9 5d fc     fstp     DWORD PTR _vMidPoint$[ebp+8]
  2378.   00022    8b f9         mov     edi, ecx
  2379.   00024    8b 77 04     mov     esi, DWORD PTR [edi+4]
  2380.   00027    ff 75 14     push     DWORD PTR _pvMeshPoints$[ebp]
  2381.   0002a    0f af 30     imul     esi, DWORD PTR [eax]
  2382.   0002d    ff 75 10     push     DWORD PTR _iEdge$[ebp]
  2383.   00030    03 75 18     add     esi, DWORD PTR _pvLinePoints$[ebp]
  2384.   00033    ff 75 0c     push     DWORD PTR _pwFace1$[ebp]
  2385.   00036    ff 75 08     push     DWORD PTR _cdMesh$[ebp]
  2386.   00039    e8 00 00 00 00     call     ?AppendPointSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z ; CAdjacencyOutline::AppendPointSkinned
  2387.  
  2388. ; 276  : 
  2389. ; 277  :     // the third position should be ignored!
  2390. ; 278  :     m_cfvf.SetTexCoord(pvDestPoint, 4, &vMidPoint);
  2391.  
  2392.   0003e    8d 45 f4     lea     eax, DWORD PTR _vMidPoint$[ebp]
  2393.   00041    50         push     eax
  2394.   00042    6a 04         push     4
  2395.   00044    56         push     esi
  2396.   00045    8b cf         mov     ecx, edi
  2397.   00047    e8 00 00 00 00     call     ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetTexCoord
  2398.   0004c    5f         pop     edi
  2399.   0004d    5e         pop     esi
  2400.  
  2401. ; 279  : }
  2402.  
  2403.   0004e    c9         leave
  2404.   0004f    c2 18 00     ret     24            ; 00000018H
  2405. ?AppendMidpointSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z ENDP ; CAdjacencyOutline::AppendMidpointSkinned
  2406. _TEXT    ENDS
  2407. PUBLIC    ?AppendPointIndexSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z ; CAdjacencyOutline::AppendPointIndexSkinned
  2408. ; Function compile flags: /Ogs
  2409. ;    COMDAT ?AppendPointIndexSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z
  2410. _TEXT    SEGMENT
  2411. _vAvg$ = -16                        ; size = 12
  2412. _this$ = -4                        ; size = 4
  2413. _cdMesh$ = 8                        ; size = 4
  2414. _pwFace1$ = 12                        ; size = 4
  2415. _iEdge$ = 16                        ; size = 4
  2416. _pvMeshPoints$ = 20                    ; size = 4
  2417. _pvDestPoint$ = 24                    ; size = 4
  2418. _pvLinePoints$ = 24                    ; size = 4
  2419. _iCurPoint$ = 28                    ; size = 4
  2420. ?AppendPointIndexSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z PROC NEAR ; CAdjacencyOutline::AppendPointIndexSkinned, COMDAT
  2421. ; _this$ = ecx
  2422.  
  2423. ; 330  : }
  2424.  
  2425.   00000    8b ff         npad     2
  2426.  
  2427. ; 291  : {
  2428.  
  2429.   00002    55         push     ebp
  2430.   00003    8b ec         mov     ebp, esp
  2431.   00005    83 ec 10     sub     esp, 16            ; 00000010H
  2432.  
  2433. ; 292  :     PBYTE pvDestPoint;
  2434. ; 293  :     PBYTE pvPoint;
  2435. ; 294  :     D3DXVECTOR3 vAvg(1.0f/3.0f,1.0f/3.0f,1.0f/3.0f);
  2436. ; 295  : 
  2437. ; 296  :     pvDestPoint = m_cfvf.GetArrayElem(pvLinePoints, iCurPoint);
  2438.  
  2439.   00008    8b 51 04     mov     edx, DWORD PTR [ecx+4]
  2440.   0000b    d9 05 00 00 00
  2441.     00         fld     DWORD PTR __real@3eaaaaab
  2442.   00011    8b 45 1c     mov     eax, DWORD PTR _iCurPoint$[ebp]
  2443.   00014    d9 55 f0     fst     DWORD PTR _vAvg$[ebp]
  2444.   00017    0f af 10     imul     edx, DWORD PTR [eax]
  2445.   0001a    d9 55 f4     fst     DWORD PTR _vAvg$[ebp+4]
  2446.   0001d    d9 5d f8     fstp     DWORD PTR _vAvg$[ebp+8]
  2447.  
  2448. ; 297  : 
  2449. ; 298  :     // Point 0 - first point on edge shared with another triangle
  2450. ; 299  :     pvPoint = cdMesh.GetArrayElem(pvMeshPoints, pwFace1[iEdge]);
  2451.  
  2452.   00020    8b 45 0c     mov     eax, DWORD PTR _pwFace1$[ebp]
  2453.   00023    03 55 18     add     edx, DWORD PTR _pvLinePoints$[ebp]
  2454.   00026    53         push     ebx
  2455.   00027    8b 5d 08     mov     ebx, DWORD PTR _cdMesh$[ebp]
  2456.   0002a    56         push     esi
  2457.   0002b    8b 75 10     mov     esi, DWORD PTR _iEdge$[ebp]
  2458.   0002e    8b 04 b0     mov     eax, DWORD PTR [eax+esi*4]
  2459.   00031    0f af 83 c0 00
  2460.     00 00         imul     eax, DWORD PTR [ebx+192]
  2461.  
  2462. ; 300  : 
  2463. ; 301  :     // first position goes in standard position spot
  2464. ; 302  :     m_cfvf.SetPosition(pvDestPoint, cdMesh.PvGetPosition(pvPoint));
  2465.  
  2466.   00038    8b b3 88 00 00
  2467.     00         mov     esi, DWORD PTR [ebx+136]
  2468.   0003e    0f b7 76 02     movzx     esi, WORD PTR [esi+2]
  2469.   00042    03 45 14     add     eax, DWORD PTR _pvMeshPoints$[ebp]
  2470.   00045    57         push     edi
  2471.   00046    03 f0         add     esi, eax
  2472.   00048    8b fa         mov     edi, edx
  2473.   0004a    a5         movsd
  2474.   0004b    a5         movsd
  2475.   0004c    a5         movsd
  2476.  
  2477. ; 303  : 
  2478. ; 304  :     // first set of weights go in standard spot - expand to standard length
  2479. ; 305  :     CopyIndexedWeights(cdMesh.PfGetWeights(pvPoint), cdMesh.CWeights() + 1, m_cfvf.PfGetWeights(pvDestPoint), m_cfvf.CWeights());
  2480.  
  2481.   0004d    8b 79 38     mov     edi, DWORD PTR [ecx+56]
  2482.   00050    89 4d fc     mov     DWORD PTR _this$[ebp], ecx
  2483.   00053    8b 8b 8c 00 00
  2484.     00         mov     ecx, DWORD PTR [ebx+140]
  2485.   00059    85 c9         test     ecx, ecx
  2486.   0005b    89 55 18     mov     DWORD PTR _pvDestPoint$[ebp], edx
  2487.   0005e    75 04         jne     SHORT $L57068
  2488.   00060    33 f6         xor     esi, esi
  2489.   00062    eb 05         jmp     SHORT $L57069
  2490. $L57068:
  2491.   00064    0f b6 71 04     movzx     esi, BYTE PTR [ecx+4]
  2492.   00068    46         inc     esi
  2493. $L57069:
  2494.   00069    0f b7 49 02     movzx     ecx, WORD PTR [ecx+2]
  2495.   0006d    57         push     edi
  2496.   0006e    83 c2 0c     add     edx, 12            ; 0000000cH
  2497.   00071    52         push     edx
  2498.   00072    46         inc     esi
  2499.   00073    03 c8         add     ecx, eax
  2500.   00075    56         push     esi
  2501.   00076    51         push     ecx
  2502.   00077    e8 00 00 00 00     call     ?CopyIndexedWeights@@YAXPAMK0K@Z ; CopyIndexedWeights
  2503.  
  2504. ; 306  :     
  2505. ; 307  :     // Point 1 - other point on edge shared with another triangle
  2506. ; 308  :     pvPoint = cdMesh.GetArrayElem(pvMeshPoints, pwFace1[(iEdge+1)%3]);
  2507.  
  2508.   0007c    8b 45 10     mov     eax, DWORD PTR _iEdge$[ebp]
  2509.   0007f    83 c4 10     add     esp, 16            ; 00000010H
  2510.   00082    6a 03         push     3
  2511.   00084    40         inc     eax
  2512.   00085    59         pop     ecx
  2513.   00086    33 d2         xor     edx, edx
  2514.   00088    f7 f1         div     ecx
  2515.   0008a    8b 45 0c     mov     eax, DWORD PTR _pwFace1$[ebp]
  2516.  
  2517. ; 309  : 
  2518. ; 310  :     // second position goes in first texture coord
  2519. ; 311  :     m_cfvf.SetTexCoord(pvDestPoint, 0, cdMesh.PvGetPosition(pvPoint));
  2520.  
  2521.   0008d    8b 7d fc     mov     edi, DWORD PTR _this$[ebp]
  2522.   00090    8b cf         mov     ecx, edi
  2523.   00092    8b 34 90     mov     esi, DWORD PTR [eax+edx*4]
  2524.   00095    0f af b3 c0 00
  2525.     00 00         imul     esi, DWORD PTR [ebx+192]
  2526.   0009c    8b 83 88 00 00
  2527.     00         mov     eax, DWORD PTR [ebx+136]
  2528.   000a2    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  2529.   000a6    03 75 14     add     esi, DWORD PTR _pvMeshPoints$[ebp]
  2530.   000a9    03 c6         add     eax, esi
  2531.   000ab    50         push     eax
  2532.   000ac    6a 00         push     0
  2533.   000ae    ff 75 18     push     DWORD PTR _pvDestPoint$[ebp]
  2534.   000b1    e8 00 00 00 00     call     ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetTexCoord
  2535.  
  2536. ; 312  : 
  2537. ; 313  :     // second set of weights go in second texture coord- expand to standard length
  2538. ; 314  :     CopyIndexedWeights(cdMesh.PfGetWeights(pvPoint), cdMesh.CWeights() + 1, (float*)m_cfvf.PxyzwGetTexCoord(pvDestPoint, 1), m_cfvf.CWeights());
  2539.  
  2540.   000b6    8b 83 8c 00 00
  2541.     00         mov     eax, DWORD PTR [ebx+140]
  2542.   000bc    85 c0         test     eax, eax
  2543.   000be    8b 57 38     mov     edx, DWORD PTR [edi+56]
  2544.   000c1    75 04         jne     SHORT $L57091
  2545.   000c3    33 c9         xor     ecx, ecx
  2546.   000c5    eb 05         jmp     SHORT $L57092
  2547. $L57091:
  2548.   000c7    0f b6 48 04     movzx     ecx, BYTE PTR [eax+4]
  2549.   000cb    41         inc     ecx
  2550. $L57092:
  2551.   000cc    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  2552.   000d0    52         push     edx
  2553.   000d1    8b 57 1c     mov     edx, DWORD PTR [edi+28]
  2554.   000d4    03 55 18     add     edx, DWORD PTR _pvDestPoint$[ebp]
  2555.   000d7    41         inc     ecx
  2556.   000d8    52         push     edx
  2557.   000d9    51         push     ecx
  2558.   000da    03 c6         add     eax, esi
  2559.   000dc    50         push     eax
  2560.   000dd    e8 00 00 00 00     call     ?CopyIndexedWeights@@YAXPAMK0K@Z ; CopyIndexedWeights
  2561.  
  2562. ; 315  : 
  2563. ; 316  :     // Point 2 - point NOT on edge shared with another triangle
  2564. ; 317  :     pvPoint = cdMesh.GetArrayElem(pvMeshPoints, pwFace1[(iEdge+2)%3]);
  2565.  
  2566.   000e2    8b 45 10     mov     eax, DWORD PTR _iEdge$[ebp]
  2567.   000e5    83 c4 10     add     esp, 16            ; 00000010H
  2568.   000e8    6a 03         push     3
  2569.   000ea    83 c0 02     add     eax, 2
  2570.   000ed    59         pop     ecx
  2571.   000ee    33 d2         xor     edx, edx
  2572.   000f0    f7 f1         div     ecx
  2573.   000f2    8b 45 0c     mov     eax, DWORD PTR _pwFace1$[ebp]
  2574.   000f5    8b 34 90     mov     esi, DWORD PTR [eax+edx*4]
  2575.   000f8    0f af b3 c0 00
  2576.     00 00         imul     esi, DWORD PTR [ebx+192]
  2577.  
  2578. ; 318  : 
  2579. ; 319  :     // third position goes in the third texture coordinate
  2580. ; 320  :     m_cfvf.SetTexCoord(pvDestPoint, 3, cdMesh.PvGetPosition(pvPoint));
  2581.  
  2582.   000ff    8b 83 88 00 00
  2583.     00         mov     eax, DWORD PTR [ebx+136]
  2584.   00105    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  2585.   00109    03 75 14     add     esi, DWORD PTR _pvMeshPoints$[ebp]
  2586.   0010c    03 c6         add     eax, esi
  2587.   0010e    50         push     eax
  2588.   0010f    51         push     ecx
  2589.   00110    ff 75 18     push     DWORD PTR _pvDestPoint$[ebp]
  2590.   00113    8b cf         mov     ecx, edi
  2591.   00115    e8 00 00 00 00     call     ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetTexCoord
  2592.  
  2593. ; 321  : 
  2594. ; 322  :     // third set of weights go in fourth texture coord- expand to standard length
  2595. ; 323  :     CopyIndexedWeights(cdMesh.PfGetWeights(pvPoint), cdMesh.CWeights() + 1, (float*)m_cfvf.PxyzwGetTexCoord(pvDestPoint, 4), m_cfvf.CWeights());
  2596.  
  2597.   0011a    8b 9b 8c 00 00
  2598.     00         mov     ebx, DWORD PTR [ebx+140]
  2599.   00120    85 db         test     ebx, ebx
  2600.   00122    8b 47 38     mov     eax, DWORD PTR [edi+56]
  2601.   00125    75 04         jne     SHORT $L57114
  2602.   00127    33 c9         xor     ecx, ecx
  2603.   00129    eb 05         jmp     SHORT $L57115
  2604. $L57114:
  2605.   0012b    0f b6 4b 04     movzx     ecx, BYTE PTR [ebx+4]
  2606.   0012f    41         inc     ecx
  2607. $L57115:
  2608.   00130    50         push     eax
  2609.   00131    8b 47 28     mov     eax, DWORD PTR [edi+40]
  2610.   00134    03 45 18     add     eax, DWORD PTR _pvDestPoint$[ebp]
  2611.   00137    41         inc     ecx
  2612.   00138    50         push     eax
  2613.   00139    0f b7 43 02     movzx     eax, WORD PTR [ebx+2]
  2614.   0013d    51         push     ecx
  2615.   0013e    03 c6         add     eax, esi
  2616.   00140    50         push     eax
  2617.   00141    e8 00 00 00 00     call     ?CopyIndexedWeights@@YAXPAMK0K@Z ; CopyIndexedWeights
  2618.   00146    83 c4 10     add     esp, 16            ; 00000010H
  2619.  
  2620. ; 324  : 
  2621. ; 325  : 
  2622. ; 326  :     // the third position should be added in
  2623. ; 327  :     m_cfvf.SetTexCoord(pvDestPoint, 6, &vAvg);
  2624.  
  2625.   00149    8d 45 f0     lea     eax, DWORD PTR _vAvg$[ebp]
  2626.   0014c    50         push     eax
  2627.   0014d    6a 06         push     6
  2628.   0014f    ff 75 18     push     DWORD PTR _pvDestPoint$[ebp]
  2629.   00152    8b cf         mov     ecx, edi
  2630.   00154    e8 00 00 00 00     call     ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetTexCoord
  2631.  
  2632. ; 328  : 
  2633. ; 329  :     iCurPoint += 1;
  2634.  
  2635.   00159    8b 45 1c     mov     eax, DWORD PTR _iCurPoint$[ebp]
  2636.   0015c    ff 00         inc     DWORD PTR [eax]
  2637.   0015e    5f         pop     edi
  2638.   0015f    5e         pop     esi
  2639.   00160    5b         pop     ebx
  2640.  
  2641. ; 330  : }
  2642.  
  2643.   00161    c9         leave
  2644.   00162    c2 18 00     ret     24            ; 00000018H
  2645. ?AppendPointIndexSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z ENDP ; CAdjacencyOutline::AppendPointIndexSkinned
  2646. _TEXT    ENDS
  2647. PUBLIC    ?AppendMidpointIndexSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z ; CAdjacencyOutline::AppendMidpointIndexSkinned
  2648. ; Function compile flags: /Ogs
  2649. ;    COMDAT ?AppendMidpointIndexSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z
  2650. _TEXT    SEGMENT
  2651. _vMidPoint$ = -12                    ; size = 12
  2652. _cdMesh$ = 8                        ; size = 4
  2653. _pwFace1$ = 12                        ; size = 4
  2654. _iEdge$ = 16                        ; size = 4
  2655. _pvMeshPoints$ = 20                    ; size = 4
  2656. _pvLinePoints$ = 24                    ; size = 4
  2657. _iCurPoint$ = 28                    ; size = 4
  2658. ?AppendMidpointIndexSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z PROC NEAR ; CAdjacencyOutline::AppendMidpointIndexSkinned, COMDAT
  2659. ; _this$ = ecx
  2660.  
  2661. ; 352  : }
  2662.  
  2663.   00000    8b ff         npad     2
  2664.  
  2665. ; 342  : {
  2666.  
  2667.   00002    55         push     ebp
  2668.   00003    8b ec         mov     ebp, esp
  2669.   00005    83 ec 0c     sub     esp, 12            ; 0000000cH
  2670.  
  2671. ; 343  :     PBYTE pvDestPoint;
  2672. ; 344  :     D3DXVECTOR3 vMidPoint(0.5f, 0.5f, 0.0f);
  2673. ; 345  : 
  2674. ; 346  :     pvDestPoint = m_cfvf.GetArrayElem(pvLinePoints, iCurPoint);
  2675.  
  2676.   00008    8b 45 1c     mov     eax, DWORD PTR _iCurPoint$[ebp]
  2677.   0000b    d9 05 00 00 00
  2678.     00         fld     DWORD PTR __real@3f000000
  2679.   00011    56         push     esi
  2680.   00012    d9 55 f4     fst     DWORD PTR _vMidPoint$[ebp]
  2681.   00015    57         push     edi
  2682.   00016    d9 5d f8     fstp     DWORD PTR _vMidPoint$[ebp+4]
  2683.  
  2684. ; 347  : 
  2685. ; 348  :     AppendPointIndexSkinned(cdMesh, pwFace1, iEdge, pvMeshPoints, pvLinePoints, iCurPoint);
  2686.  
  2687.   00019    50         push     eax
  2688.   0001a    d9 ee         fldz
  2689.   0001c    ff 75 18     push     DWORD PTR _pvLinePoints$[ebp]
  2690.   0001f    d9 5d fc     fstp     DWORD PTR _vMidPoint$[ebp+8]
  2691.   00022    8b f9         mov     edi, ecx
  2692.   00024    8b 77 04     mov     esi, DWORD PTR [edi+4]
  2693.   00027    ff 75 14     push     DWORD PTR _pvMeshPoints$[ebp]
  2694.   0002a    0f af 30     imul     esi, DWORD PTR [eax]
  2695.   0002d    ff 75 10     push     DWORD PTR _iEdge$[ebp]
  2696.   00030    03 75 18     add     esi, DWORD PTR _pvLinePoints$[ebp]
  2697.   00033    ff 75 0c     push     DWORD PTR _pwFace1$[ebp]
  2698.   00036    ff 75 08     push     DWORD PTR _cdMesh$[ebp]
  2699.   00039    e8 00 00 00 00     call     ?AppendPointIndexSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z ; CAdjacencyOutline::AppendPointIndexSkinned
  2700.  
  2701. ; 349  : 
  2702. ; 350  :     // the third position should be ignored!
  2703. ; 351  :     m_cfvf.SetTexCoord(pvDestPoint, 6, &vMidPoint);
  2704.  
  2705.   0003e    8d 45 f4     lea     eax, DWORD PTR _vMidPoint$[ebp]
  2706.   00041    50         push     eax
  2707.   00042    6a 06         push     6
  2708.   00044    56         push     esi
  2709.   00045    8b cf         mov     ecx, edi
  2710.   00047    e8 00 00 00 00     call     ?SetTexCoord@DXCrackFVF@@QAEXPAXIPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetTexCoord
  2711.   0004c    5f         pop     edi
  2712.   0004d    5e         pop     esi
  2713.  
  2714. ; 352  : }
  2715.  
  2716.   0004e    c9         leave
  2717.   0004f    c2 18 00     ret     24            ; 00000018H
  2718. ?AppendMidpointIndexSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z ENDP ; CAdjacencyOutline::AppendMidpointIndexSkinned
  2719. _TEXT    ENDS
  2720. PUBLIC    ?Init@CAdjacencyOutline@@QAEJPAUID3DXBaseMesh@@PAK@Z ; CAdjacencyOutline::Init
  2721. EXTRN    ??2@YAPAXI@Z:NEAR                ; operator new
  2722. EXTRN    _D3DXDeclaratorFromFVF@8:NEAR
  2723. ; Function compile flags: /Ogs
  2724. ;    COMDAT ?Init@CAdjacencyOutline@@QAEJPAUID3DXBaseMesh@@PAK@Z
  2725. _TEXT    SEGMENT
  2726. _Caps$ = -1144                        ; size = 304
  2727. _pDecl$ = -840                        ; size = 520
  2728. $T57127 = -320                        ; size = 64
  2729. _cdMesh$ = -256                        ; size = 196
  2730. _rgwFaces$ = -60                    ; size = 4
  2731. _pdwNeighbor$ = -56                    ; size = 4
  2732. _iCurLineOffset$ = -56                    ; size = 4
  2733. _pDevice$ = -52                        ; size = 4
  2734. _pVBVertices$ = -48                    ; size = 4
  2735. tv1276 = -44                        ; size = 4
  2736. _iCurVertexOffset$ = -44                ; size = 4
  2737. tv1172 = -40                        ; size = 4
  2738. _iFaceEnd$ = -40                    ; size = 4
  2739. _iFace$ = -36                        ; size = 4
  2740. _cConnections$ = -36                    ; size = 4
  2741. _rgdwFaces$ = -32                    ; size = 4
  2742. _rgaeAttributeTableMesh$ = -28                ; size = 4
  2743. _iae$ = -24                        ; size = 4
  2744. _pibFaces$ = -20                    ; size = 4
  2745. _pvLinePoints$ = -16                    ; size = 4
  2746. _pvMeshPoints$ = -12                    ; size = 4
  2747. _b16BitMesh$ = -5                    ; size = 1
  2748. _iCurPoint$ = -4                    ; size = 4
  2749. _hr$ = -4                        ; size = 4
  2750. _iPoint$ = 8                        ; size = 4
  2751. _ptmMesh$ = 8                        ; size = 4
  2752. _rgdwNeighbors$ = 12                    ; size = 4
  2753. ?Init@CAdjacencyOutline@@QAEJPAUID3DXBaseMesh@@PAK@Z PROC NEAR ; CAdjacencyOutline::Init, COMDAT
  2754. ; _this$ = ecx
  2755.  
  2756. ; 652  : }
  2757.  
  2758.   00000    8b ff         npad     2
  2759.  
  2760. ; 356  : {
  2761.  
  2762.   00002    55         push     ebp
  2763.   00003    8b ec         mov     ebp, esp
  2764.   00005    81 ec 78 04 00
  2765.     00         sub     esp, 1144        ; 00000478H
  2766.   0000b    53         push     ebx
  2767.   0000c    56         push     esi
  2768.   0000d    57         push     edi
  2769.  
  2770. ; 357  :     HRESULT hr = S_OK;
  2771. ; 358  :     UINT cFaces;
  2772. ; 359  :     UINT iFace;
  2773. ; 360  :     UINT cConnections;
  2774. ; 361  :     UINT cPointsMax;
  2775. ; 362  :     UINT iline;
  2776. ; 363  :     PBYTE pvLinePoints = NULL;
  2777.  
  2778.   0000e    33 ff         xor     edi, edi
  2779.   00010    8b d9         mov     ebx, ecx
  2780.  
  2781. ; 364  :     PBYTE pvMeshPoints = NULL;
  2782. ; 365  :     LPDIRECT3DVERTEXBUFFER9 pVBVertices = NULL;
  2783. ; 366  :     LPDIRECT3DINDEXBUFFER9 pibFaces = NULL;
  2784. ; 367  :     PUINT pdwFaceCur;
  2785. ; 368  :     PUINT rgdwFaces = NULL;
  2786. ; 369  :     CD3DXCrackDecl1 cdMesh;
  2787.  
  2788.   00012    8d 8d 00 ff ff
  2789.     ff         lea     ecx, DWORD PTR _cdMesh$[ebp]
  2790.   00018    89 7d f0     mov     DWORD PTR _pvLinePoints$[ebp], edi
  2791.   0001b    89 7d f4     mov     DWORD PTR _pvMeshPoints$[ebp], edi
  2792.   0001e    89 7d d0     mov     DWORD PTR _pVBVertices$[ebp], edi
  2793.   00021    89 7d ec     mov     DWORD PTR _pibFaces$[ebp], edi
  2794.   00024    89 7d e0     mov     DWORD PTR _rgdwFaces$[ebp], edi
  2795.   00027    e8 00 00 00 00     call     ??0CD3DXCrackDecl1@@QAE@XZ ; CD3DXCrackDecl1::CD3DXCrackDecl1
  2796.  
  2797. ; 370  :     PWORD rgwFaces = NULL;
  2798. ; 371  :     bool b16BitMesh;
  2799. ; 372  :     UINT iIndex;
  2800. ; 373  :     UINT iPoint;
  2801. ; 374  :     DWORD *pdwNeighbor;
  2802. ; 375  :     UINT iCurPoint;
  2803. ; 376  :     LPDIRECT3DDEVICE9 pDevice;
  2804. ; 377  :     D3DXATTRIBUTERANGE *rgaeAttributeTableMesh = NULL;
  2805. ; 378  :     DWORD iCurLineOffset;
  2806. ; 379  :     DWORD iCurVertexOffset;
  2807. ; 380  :     DWORD iFaceEnd;
  2808. ; 381  :     DWORD iae;
  2809. ; 382  :     DWORD dwFVFAdjVertices;
  2810. ; 383  :     D3DCAPS9 Caps;
  2811. ; 384  :     D3DVERTEXELEMENT9 pDecl[MAX_FVF_DECL_SIZE];
  2812. ; 385  :     LPD3DVERTEXELEMENT9 pDeclCur;
  2813. ; 386  : 
  2814. ; 387  :     ptmMesh->GetDeclaration(pDecl);
  2815.  
  2816.   0002c    8b 75 08     mov     esi, DWORD PTR _ptmMesh$[ebp]
  2817.   0002f    8b 06         mov     eax, DWORD PTR [esi]
  2818.   00031    8d 8d b8 fc ff
  2819.     ff         lea     ecx, DWORD PTR _pDecl$[ebp]
  2820.   00037    51         push     ecx
  2821.   00038    56         push     esi
  2822.   00039    89 7d c4     mov     DWORD PTR _rgwFaces$[ebp], edi
  2823.   0003c    89 7d e4     mov     DWORD PTR _rgaeAttributeTableMesh$[ebp], edi
  2824.   0003f    ff 50 1c     call     DWORD PTR [eax+28]
  2825.  
  2826. ; 388  :     cdMesh.SetDeclaration(pDecl);
  2827.  
  2828.   00042    8d 85 b8 fc ff
  2829.     ff         lea     eax, DWORD PTR _pDecl$[ebp]
  2830.   00048    50         push     eax
  2831.   00049    8d 8d 00 ff ff
  2832.     ff         lea     ecx, DWORD PTR _cdMesh$[ebp]
  2833.   0004f    e8 00 00 00 00     call     ?SetDeclaration@CD3DXCrackDecl1@@QAEJPBU_D3DVERTEXELEMENT9@@@Z ; CD3DXCrackDecl1::SetDeclaration
  2834.  
  2835. ; 389  : 
  2836. ; 390  :     ptmMesh->GetDevice(&pDevice);
  2837.  
  2838.   00054    8b 06         mov     eax, DWORD PTR [esi]
  2839.   00056    8d 4d cc     lea     ecx, DWORD PTR _pDevice$[ebp]
  2840.   00059    51         push     ecx
  2841.   0005a    56         push     esi
  2842.   0005b    ff 50 28     call     DWORD PTR [eax+40]
  2843.  
  2844. ; 391  :     pDevice->Release();
  2845.  
  2846.   0005e    8b 45 cc     mov     eax, DWORD PTR _pDevice$[ebp]
  2847.   00061    8b 08         mov     ecx, DWORD PTR [eax]
  2848.   00063    50         push     eax
  2849.   00064    ff 51 08     call     DWORD PTR [ecx+8]
  2850.  
  2851. ; 392  : 
  2852. ; 393  :     // is the mesh 16 bit?
  2853. ; 394  :     b16BitMesh = !(ptmMesh->GetOptions() & D3DXMESH_32BIT);
  2854.  
  2855.   00067    8b 06         mov     eax, DWORD PTR [esi]
  2856.   00069    56         push     esi
  2857.   0006a    ff 50 24     call     DWORD PTR [eax+36]
  2858.   0006d    34 ff         xor     al, 255            ; 000000ffH
  2859.   0006f    24 01         and     al, 1
  2860.  
  2861. ; 395  : 
  2862. ; 396  :     hr = CreateEmptyOutline();
  2863.  
  2864.   00071    8b cb         mov     ecx, ebx
  2865.   00073    88 45 fb     mov     BYTE PTR _b16BitMesh$[ebp], al
  2866.   00076    e8 00 00 00 00     call     ?CreateEmptyOutline@CAdjacencyOutline@@AAEJXZ ; CAdjacencyOutline::CreateEmptyOutline
  2867.  
  2868. ; 397  :     if (FAILED(hr))
  2869.  
  2870.   0007b    3b c7         cmp     eax, edi
  2871.   0007d    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  2872.   00080    0f 8c 7f 04 00
  2873.     00         jl     $e_Exit$56555
  2874.  
  2875. ; 398  :         goto e_Exit;
  2876. ; 399  : 
  2877. ; 400  :     pDevice->GetDeviceCaps(&Caps);
  2878.  
  2879.   00086    8b 45 cc     mov     eax, DWORD PTR _pDevice$[ebp]
  2880.   00089    8b 08         mov     ecx, DWORD PTR [eax]
  2881.   0008b    8d 95 88 fb ff
  2882.     ff         lea     edx, DWORD PTR _Caps$[ebp]
  2883.   00091    52         push     edx
  2884.   00092    50         push     eax
  2885.   00093    ff 51 1c     call     DWORD PTR [ecx+28]
  2886.  
  2887. ; 401  :     m_bHWVertexShaders = Caps.VertexShaderVersion >= D3DVS_VERSION(1,1);
  2888.  
  2889.   00096    81 bd 4c fc ff
  2890.     ff 01 01 fe ff     cmp     DWORD PTR _Caps$[ebp+196], -130815 ; fffe0101H
  2891.   000a0    1b c0         sbb     eax, eax
  2892.   000a2    40         inc     eax
  2893.   000a3    89 43 48     mov     DWORD PTR [ebx+72], eax
  2894.  
  2895. ; 402  : 
  2896. ; 403  :     if (cdMesh.CWeights() > 0)
  2897.  
  2898.   000a6    8b 45 8c     mov     eax, DWORD PTR _cdMesh$[ebp+140]
  2899.   000a9    3b c7         cmp     eax, edi
  2900.   000ab    74 25         je     SHORT $L56557
  2901.   000ad    0f b6 40 04     movzx     eax, BYTE PTR [eax+4]
  2902.   000b1    40         inc     eax
  2903.   000b2    3b c7         cmp     eax, edi
  2904.   000b4    7e 1c         jle     SHORT $L56557
  2905.  
  2906. ; 404  :     {
  2907. ; 405  :         m_bSkinning = TRUE;
  2908.  
  2909.   000b6    33 c0         xor     eax, eax
  2910.   000b8    40         inc     eax
  2911.  
  2912. ; 406  : 
  2913. ; 407  :         if (cdMesh.BIndexedWeights())
  2914.  
  2915.   000b9    39 7d 90     cmp     DWORD PTR _cdMesh$[ebp+144], edi
  2916.   000bc    89 43 40     mov     DWORD PTR [ebx+64], eax
  2917.   000bf    74 0a         je     SHORT $L56558
  2918.  
  2919. ; 408  :         {
  2920. ; 409  :             dwFVFAdjVertices = INDEXSKINNEDFVF;
  2921.  
  2922.   000c1    b9 0e 87 79 1e     mov     ecx, 511280910        ; 1e79870eH
  2923.  
  2924. ; 410  :             m_bIndexSkinning = TRUE;
  2925.  
  2926.   000c6    89 43 44     mov     DWORD PTR [ebx+68], eax
  2927.  
  2928. ; 411  :         }
  2929. ; 412  :         else
  2930.  
  2931.   000c9    eb 10         jmp     SHORT $L56560
  2932. $L56558:
  2933.  
  2934. ; 413  :         {
  2935. ; 414  :             dwFVFAdjVertices = SKINNEDFVF;
  2936.  
  2937.   000cb    b9 0c 05 99 01     mov     ecx, 26805516        ; 0199050cH
  2938.  
  2939. ; 415  :             m_bIndexSkinning = FALSE;
  2940. ; 416  :         }
  2941. ; 417  :     }
  2942. ; 418  :     else
  2943.  
  2944.   000d0    eb 06         jmp     SHORT $L57167
  2945. $L56557:
  2946.  
  2947. ; 419  :     {
  2948. ; 420  :         dwFVFAdjVertices = D3DFVF_XYZ;
  2949.  
  2950.   000d2    6a 02         push     2
  2951.   000d4    59         pop     ecx
  2952.  
  2953. ; 421  :         m_bSkinning = FALSE;
  2954.  
  2955.   000d5    89 7b 40     mov     DWORD PTR [ebx+64], edi
  2956. $L57167:
  2957.  
  2958. ; 422  :         m_bIndexSkinning = FALSE;
  2959.  
  2960.   000d8    89 7b 44     mov     DWORD PTR [ebx+68], edi
  2961. $L56560:
  2962.  
  2963. ; 423  :     }
  2964. ; 424  :     m_cfvf = DXCrackFVF(dwFVFAdjVertices);
  2965.  
  2966.   000db    51         push     ecx
  2967.   000dc    8d 8d c0 fe ff
  2968.     ff         lea     ecx, DWORD PTR $T57127[ebp]
  2969.   000e2    e8 00 00 00 00     call     ??0DXCrackFVF@@QAE@K@Z    ; DXCrackFVF::DXCrackFVF
  2970.  
  2971. ; 425  : 
  2972. ; 426  :     if (rgdwNeighbors == NULL)
  2973.  
  2974.   000e7    83 7d 0c 00     cmp     DWORD PTR _rgdwNeighbors$[ebp], 0
  2975.   000eb    6a 10         push     16            ; 00000010H
  2976.   000ed    59         pop     ecx
  2977.   000ee    8b f0         mov     esi, eax
  2978.   000f0    8b fb         mov     edi, ebx
  2979.   000f2    f3 a5         rep movsd
  2980.   000f4    0f 84 09 04 00
  2981.     00         je     $L57161
  2982.  
  2983. ; 427  :         goto e_Exit;
  2984. ; 428  : 
  2985. ; 429  :     hr = ptmMesh->GetAttributeTable(NULL, &m_caeAttributeTable);
  2986.  
  2987.   000fa    8b 7d 08     mov     edi, DWORD PTR _ptmMesh$[ebp]
  2988.   000fd    8b 07         mov     eax, DWORD PTR [edi]
  2989.   000ff    8d 73 58     lea     esi, DWORD PTR [ebx+88]
  2990.   00102    56         push     esi
  2991.   00103    6a 00         push     0
  2992.   00105    57         push     edi
  2993.   00106    ff 50 4c     call     DWORD PTR [eax+76]
  2994.  
  2995. ; 430  :     if (FAILED(hr))
  2996.  
  2997.   00109    85 c0         test     eax, eax
  2998.   0010b    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  2999.   0010e    0f 8c ef 03 00
  3000.     00         jl     $L57161
  3001.  
  3002. ; 431  :         goto e_Exit;
  3003. ; 432  : 
  3004. ; 433  :     if (m_caeAttributeTable == 0)
  3005.  
  3006.   00114    8b 06         mov     eax, DWORD PTR [esi]
  3007.   00116    85 c0         test     eax, eax
  3008.   00118    0f 84 e5 03 00
  3009.     00         je     $L57161
  3010.  
  3011. ; 434  :     {
  3012. ; 435  :         // not attribute sorted!  just return for now
  3013. ; 436  :         goto e_Exit;
  3014. ; 437  :     }
  3015. ; 438  : 
  3016. ; 439  :     rgaeAttributeTableMesh = new D3DXATTRIBUTERANGE[m_caeAttributeTable];
  3017.  
  3018.   0011e    8d 04 80     lea     eax, DWORD PTR [eax+eax*4]
  3019.   00121    c1 e0 02     shl     eax, 2
  3020.   00124    50         push     eax
  3021.   00125    e8 00 00 00 00     call     ??2@YAPAXI@Z        ; operator new
  3022.   0012a    89 45 e4     mov     DWORD PTR _rgaeAttributeTableMesh$[ebp], eax
  3023.  
  3024. ; 440  :     m_rgaeAttributeTable = new D3DXATTRIBUTERANGE[m_caeAttributeTable];
  3025.  
  3026.   0012d    8b 06         mov     eax, DWORD PTR [esi]
  3027.   0012f    8d 04 80     lea     eax, DWORD PTR [eax+eax*4]
  3028.   00132    c1 e0 02     shl     eax, 2
  3029.   00135    50         push     eax
  3030.   00136    e8 00 00 00 00     call     ??2@YAPAXI@Z        ; operator new
  3031.  
  3032. ; 441  :     if ((rgaeAttributeTableMesh == NULL) || (rgaeAttributeTableMesh == NULL))
  3033.  
  3034.   0013b    83 7d e4 00     cmp     DWORD PTR _rgaeAttributeTableMesh$[ebp], 0
  3035.   0013f    59         pop     ecx
  3036.   00140    59         pop     ecx
  3037.   00141    89 43 54     mov     DWORD PTR [ebx+84], eax
  3038.   00144    0f 84 b2 03 00
  3039.     00         je     $L56574
  3040.  
  3041. ; 444  :         goto e_Exit;
  3042. ; 445  :     }
  3043. ; 446  : 
  3044. ; 447  :     hr = ptmMesh->GetAttributeTable(rgaeAttributeTableMesh, NULL);
  3045.  
  3046.   0014a    8b 07         mov     eax, DWORD PTR [edi]
  3047.   0014c    6a 00         push     0
  3048.   0014e    ff 75 e4     push     DWORD PTR _rgaeAttributeTableMesh$[ebp]
  3049.   00151    57         push     edi
  3050.   00152    ff 50 4c     call     DWORD PTR [eax+76]
  3051.  
  3052. ; 448  :     if (FAILED(hr))
  3053.  
  3054.   00155    85 c0         test     eax, eax
  3055.   00157    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  3056.   0015a    0f 8c a3 03 00
  3057.     00         jl     $L57161
  3058.  
  3059. ; 449  :         goto e_Exit;
  3060. ; 450  : 
  3061. ; 451  :     cFaces = rgaeAttributeTableMesh[m_caeAttributeTable-1].FaceStart + rgaeAttributeTableMesh[m_caeAttributeTable-1].FaceCount;
  3062.  
  3063.   00160    8b 06         mov     eax, DWORD PTR [esi]
  3064.   00162    8b 4d e4     mov     ecx, DWORD PTR _rgaeAttributeTableMesh$[ebp]
  3065.   00165    8d 04 80     lea     eax, DWORD PTR [eax+eax*4]
  3066.   00168    8d 04 81     lea     eax, DWORD PTR [ecx+eax*4]
  3067.   0016b    8b 70 f0     mov     esi, DWORD PTR [eax-16]
  3068.   0016e    03 70 f4     add     esi, DWORD PTR [eax-12]
  3069.  
  3070. ; 452  : 
  3071. ; 453  :     if (b16BitMesh)
  3072.  
  3073.   00171    80 7d fb 00     cmp     BYTE PTR _b16BitMesh$[ebp], 0
  3074.   00175    74 7e         je     SHORT $L56580
  3075.  
  3076. ; 454  :     {
  3077. ; 455  :         // allocate a temporary, so that the follow code
  3078. ; 456  :         //   can work on just 32bit indices
  3079. ; 457  :         rgdwFaces = new UINT[cFaces*3];
  3080.  
  3081.   00177    8d 04 76     lea     eax, DWORD PTR [esi+esi*2]
  3082.   0017a    c1 e0 02     shl     eax, 2
  3083.   0017d    50         push     eax
  3084.   0017e    e8 00 00 00 00     call     ??2@YAPAXI@Z        ; operator new
  3085.  
  3086. ; 458  :         if (rgdwFaces == NULL)
  3087.  
  3088.   00183    85 c0         test     eax, eax
  3089.   00185    59         pop     ecx
  3090.   00186    89 45 e0     mov     DWORD PTR _rgdwFaces$[ebp], eax
  3091.  
  3092. ; 613  :     if (FAILED(hr))
  3093. ; 614  :         goto e_Exit;
  3094. ; 615  : 
  3095. ; 616  : 
  3096. ; 617  : e_Exit:
  3097.  
  3098.   00189    0f 84 6d 03 00
  3099.     00         je     $L56574
  3100.   0018f    8b 07         mov     eax, DWORD PTR [edi]
  3101.   00191    8d 4d ec     lea     ecx, DWORD PTR _pibFaces$[ebp]
  3102.   00194    51         push     ecx
  3103.   00195    57         push     edi
  3104.   00196    ff 50 38     call     DWORD PTR [eax+56]
  3105.   00199    85 c0         test     eax, eax
  3106.   0019b    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  3107.   0019e    0f 8c 5f 03 00
  3108.     00         jl     $L57161
  3109.   001a4    8b 45 ec     mov     eax, DWORD PTR _pibFaces$[ebp]
  3110.   001a7    8b 08         mov     ecx, DWORD PTR [eax]
  3111.   001a9    68 00 08 00 00     push     2048            ; 00000800H
  3112.   001ae    8d 55 c4     lea     edx, DWORD PTR _rgwFaces$[ebp]
  3113.   001b1    52         push     edx
  3114.   001b2    6a 00         push     0
  3115.   001b4    6a 00         push     0
  3116.   001b6    50         push     eax
  3117.   001b7    ff 51 2c     call     DWORD PTR [ecx+44]
  3118.   001ba    85 c0         test     eax, eax
  3119.   001bc    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  3120.   001bf    0f 8c 3e 03 00
  3121.     00         jl     $L57161
  3122.   001c5    8d 34 76     lea     esi, DWORD PTR [esi+esi*2]
  3123.   001c8    33 c0         xor     eax, eax
  3124.   001ca    85 f6         test     esi, esi
  3125.   001cc    76 5d         jbe     SHORT $L56604
  3126. $L56593:
  3127.  
  3128. ; 459  :         {
  3129. ; 460  :             hr = E_OUTOFMEMORY;
  3130. ; 461  :             goto e_Exit;
  3131. ; 462  :         }
  3132. ; 463  : 
  3133. ; 464  :         // get the index buffer
  3134. ; 465  :         hr = ptmMesh->GetIndexBuffer(&pibFaces);
  3135. ; 466  :         if (FAILED(hr))
  3136. ; 467  :             goto e_Exit;
  3137. ; 468  : 
  3138. ; 469  :         hr = pibFaces->Lock(0,0, (PVOID*)&rgwFaces, D3DLOCK_NOSYSLOCK );
  3139. ; 470  :         if (FAILED(hr))
  3140. ; 471  :             goto e_Exit;
  3141. ; 472  : 
  3142. ; 473  :         // UpConvert from 16 bit to 32 bit
  3143. ; 474  :         for (iIndex = 0; iIndex < cFaces * 3; iIndex++)
  3144. ; 475  :         {
  3145. ; 476  :             if (rgwFaces[iIndex] != UNUSED16)
  3146.  
  3147.   001ce    8b 4d c4     mov     ecx, DWORD PTR _rgwFaces$[ebp]
  3148.   001d1    66 8b 0c 41     mov     cx, WORD PTR [ecx+eax*2]
  3149.   001d5    66 81 f9 ff ff     cmp     cx, 65535        ; 0000ffffH
  3150.   001da    74 0b         je     SHORT $L56596
  3151.  
  3152. ; 477  :                 rgdwFaces[iIndex] = rgwFaces[iIndex];
  3153.  
  3154.   001dc    8b 55 e0     mov     edx, DWORD PTR _rgdwFaces$[ebp]
  3155.   001df    0f b7 c9     movzx     ecx, cx
  3156.   001e2    89 0c 82     mov     DWORD PTR [edx+eax*4], ecx
  3157.  
  3158. ; 478  :             else
  3159.  
  3160.   001e5    eb 07         jmp     SHORT $L56594
  3161. $L56596:
  3162.  
  3163. ; 479  :                 rgdwFaces[iIndex] = UNUSED32;
  3164.  
  3165.   001e7    8b 4d e0     mov     ecx, DWORD PTR _rgdwFaces$[ebp]
  3166.   001ea    83 0c 81 ff     or     DWORD PTR [ecx+eax*4], -1
  3167. $L56594:
  3168.   001ee    40         inc     eax
  3169.   001ef    3b c6         cmp     eax, esi
  3170.   001f1    72 db         jb     SHORT $L56593
  3171.  
  3172. ; 480  :         }
  3173. ; 481  :     }
  3174. ; 482  :     else
  3175.  
  3176.   001f3    eb 36         jmp     SHORT $L56604
  3177. $L56580:
  3178.  
  3179. ; 483  :     {
  3180. ; 484  :         // get the index buffer
  3181. ; 485  :         hr = ptmMesh->GetIndexBuffer(&pibFaces);
  3182.  
  3183.   001f5    8b 07         mov     eax, DWORD PTR [edi]
  3184.   001f7    8d 4d ec     lea     ecx, DWORD PTR _pibFaces$[ebp]
  3185.   001fa    51         push     ecx
  3186.   001fb    57         push     edi
  3187.   001fc    ff 50 38     call     DWORD PTR [eax+56]
  3188.  
  3189. ; 486  :         if (FAILED(hr))
  3190.  
  3191.   001ff    85 c0         test     eax, eax
  3192.   00201    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  3193.   00204    0f 8c f9 02 00
  3194.     00         jl     $L57161
  3195.  
  3196. ; 487  :             goto e_Exit;
  3197. ; 488  : 
  3198. ; 489  :         hr = pibFaces->Lock(0,0, (PVOID*)&rgdwFaces, D3DLOCK_NOSYSLOCK );
  3199.  
  3200.   0020a    8b 45 ec     mov     eax, DWORD PTR _pibFaces$[ebp]
  3201.   0020d    8b 08         mov     ecx, DWORD PTR [eax]
  3202.   0020f    68 00 08 00 00     push     2048            ; 00000800H
  3203.   00214    8d 55 e0     lea     edx, DWORD PTR _rgdwFaces$[ebp]
  3204.   00217    52         push     edx
  3205.   00218    6a 00         push     0
  3206.   0021a    6a 00         push     0
  3207.   0021c    50         push     eax
  3208.   0021d    ff 51 2c     call     DWORD PTR [ecx+44]
  3209.  
  3210. ; 490  :         if (FAILED(hr))
  3211.  
  3212.   00220    85 c0         test     eax, eax
  3213.   00222    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  3214.   00225    0f 8c d8 02 00
  3215.     00         jl     $L57161
  3216. $L56604:
  3217.  
  3218. ; 491  :             goto e_Exit;
  3219. ; 492  :     }
  3220. ; 493  : 
  3221. ; 494  :     // first count the number of links
  3222. ; 495  :     cConnections = 0;
  3223.  
  3224.   0022b    33 c0         xor     eax, eax
  3225.  
  3226. ; 496  :     iCurLineOffset = 0;
  3227.  
  3228.   0022d    33 ff         xor     edi, edi
  3229.  
  3230. ; 497  :     iCurVertexOffset = 0;
  3231.  
  3232.   0022f    33 f6         xor     esi, esi
  3233.  
  3234. ; 498  :     for (iae = 0; iae < m_caeAttributeTable; iae++)
  3235.  
  3236.   00231    39 43 58     cmp     DWORD PTR [ebx+88], eax
  3237.   00234    89 45 dc     mov     DWORD PTR _cConnections$[ebp], eax
  3238.   00237    89 7d c8     mov     DWORD PTR _iCurLineOffset$[ebp], edi
  3239.   0023a    89 75 d4     mov     DWORD PTR _iCurVertexOffset$[ebp], esi
  3240.   0023d    89 45 e8     mov     DWORD PTR _iae$[ebp], eax
  3241.   00240    0f 86 9b 00 00
  3242.     00         jbe     $L56608
  3243.   00246    8b 4d e4     mov     ecx, DWORD PTR _rgaeAttributeTableMesh$[ebp]
  3244.   00249    83 c1 04     add     ecx, 4
  3245.   0024c    89 4d d8     mov     DWORD PTR tv1172[ebp], ecx
  3246. $L57162:
  3247.  
  3248. ; 499  :     {
  3249. ; 500  :         m_rgaeAttributeTable[iae].AttribId = rgaeAttributeTableMesh[iae].AttribId;
  3250.  
  3251.   0024f    8b 4b 54     mov     ecx, DWORD PTR [ebx+84]
  3252.   00252    8b 55 d8     mov     edx, DWORD PTR tv1172[ebp]
  3253.   00255    8b 52 fc     mov     edx, DWORD PTR [edx-4]
  3254.   00258    89 14 08     mov     DWORD PTR [eax+ecx], edx
  3255.  
  3256. ; 501  : 
  3257. ; 502  :         // initialize line counts
  3258. ; 503  :         m_rgaeAttributeTable[iae].FaceStart = iCurLineOffset;
  3259.  
  3260.   0025b    8b 4b 54     mov     ecx, DWORD PTR [ebx+84]
  3261.   0025e    89 7c 08 04     mov     DWORD PTR [eax+ecx+4], edi
  3262.  
  3263. ; 504  :         m_rgaeAttributeTable[iae].FaceCount = 0;
  3264.  
  3265.   00262    8b 4b 54     mov     ecx, DWORD PTR [ebx+84]
  3266.   00265    83 64 08 08 00     and     DWORD PTR [eax+ecx+8], 0
  3267.  
  3268. ; 505  : 
  3269. ; 506  :         iFaceEnd = rgaeAttributeTableMesh[iae].FaceStart + rgaeAttributeTableMesh[iae].FaceCount;
  3270.  
  3271.   0026a    8b 4d d8     mov     ecx, DWORD PTR tv1172[ebp]
  3272.   0026d    8b 11         mov     edx, DWORD PTR [ecx]
  3273.   0026f    8b 49 04     mov     ecx, DWORD PTR [ecx+4]
  3274.   00272    03 ca         add     ecx, edx
  3275.  
  3276. ; 507  :         for (iFace = rgaeAttributeTableMesh[iae].FaceStart; iFace < iFaceEnd; iFace++)
  3277.  
  3278.   00274    3b d1         cmp     edx, ecx
  3279.   00276    73 2e         jae     SHORT $L56611
  3280.   00278    8b 7d 0c     mov     edi, DWORD PTR _rgdwNeighbors$[ebp]
  3281.   0027b    8d 34 52     lea     esi, DWORD PTR [edx+edx*2]
  3282.   0027e    8d 34 b7     lea     esi, DWORD PTR [edi+esi*4]
  3283.   00281    2b ca         sub     ecx, edx
  3284. $L56609:
  3285.  
  3286. ; 508  :         {
  3287. ; 509  :             for (iPoint = 0; iPoint < 3; iPoint++)
  3288.  
  3289.   00283    6a 03         push     3
  3290.   00285    5f         pop     edi
  3291. $L56612:
  3292.  
  3293. ; 510  :             {
  3294. ; 511  :                 if (rgdwNeighbors[iFace*3 + iPoint] != UNUSED32)
  3295.  
  3296.   00286    83 3e ff     cmp     DWORD PTR [esi], -1
  3297.   00289    74 0c         je     SHORT $L56613
  3298.  
  3299. ; 512  :                 {
  3300. ; 513  :                     cConnections += 1;
  3301. ; 514  :                     m_rgaeAttributeTable[iae].FaceCount += 1;
  3302.  
  3303.   0028b    8b 53 54     mov     edx, DWORD PTR [ebx+84]
  3304.   0028e    ff 45 dc     inc     DWORD PTR _cConnections$[ebp]
  3305.   00291    8d 54 10 08     lea     edx, DWORD PTR [eax+edx+8]
  3306.   00295    ff 02         inc     DWORD PTR [edx]
  3307. $L56613:
  3308.   00297    83 c6 04     add     esi, 4
  3309.   0029a    4f         dec     edi
  3310.   0029b    75 e9         jne     SHORT $L56612
  3311.  
  3312. ; 507  :         for (iFace = rgaeAttributeTableMesh[iae].FaceStart; iFace < iFaceEnd; iFace++)
  3313.  
  3314.   0029d    49         dec     ecx
  3315.   0029e    75 e3         jne     SHORT $L56609
  3316.   002a0    8b 75 d4     mov     esi, DWORD PTR _iCurVertexOffset$[ebp]
  3317.   002a3    8b 7d c8     mov     edi, DWORD PTR _iCurLineOffset$[ebp]
  3318. $L56611:
  3319.  
  3320. ; 515  :                 }
  3321. ; 516  :             }
  3322. ; 517  :         }
  3323. ; 518  : 
  3324. ; 519  :         m_rgaeAttributeTable[iae].VertexStart = iCurVertexOffset;
  3325.  
  3326.   002a6    8b 4b 54     mov     ecx, DWORD PTR [ebx+84]
  3327.   002a9    83 45 d8 14     add     DWORD PTR tv1172[ebp], 20 ; 00000014H
  3328.   002ad    89 74 08 0c     mov     DWORD PTR [eax+ecx+12], esi
  3329.  
  3330. ; 520  :         m_rgaeAttributeTable[iae].VertexCount = m_rgaeAttributeTable[iae].FaceCount*2;
  3331.  
  3332.   002b1    8b 4b 54     mov     ecx, DWORD PTR [ebx+84]
  3333.   002b4    03 c8         add     ecx, eax
  3334.   002b6    8b 51 08     mov     edx, DWORD PTR [ecx+8]
  3335.   002b9    d1 e2         shl     edx, 1
  3336.   002bb    89 51 10     mov     DWORD PTR [ecx+16], edx
  3337.  
  3338. ; 521  : 
  3339. ; 522  :         iCurLineOffset += m_rgaeAttributeTable[iae].FaceCount;
  3340.  
  3341.   002be    8b 4b 54     mov     ecx, DWORD PTR [ebx+84]
  3342.   002c1    03 c8         add     ecx, eax
  3343.   002c3    03 79 08     add     edi, DWORD PTR [ecx+8]
  3344.  
  3345. ; 523  :         iCurVertexOffset += m_rgaeAttributeTable[iae].VertexCount;
  3346.  
  3347.   002c6    03 71 10     add     esi, DWORD PTR [ecx+16]
  3348.   002c9    ff 45 e8     inc     DWORD PTR _iae$[ebp]
  3349.   002cc    8b 4d e8     mov     ecx, DWORD PTR _iae$[ebp]
  3350.   002cf    83 c0 14     add     eax, 20            ; 00000014H
  3351.   002d2    3b 4b 58     cmp     ecx, DWORD PTR [ebx+88]
  3352.   002d5    89 7d c8     mov     DWORD PTR _iCurLineOffset$[ebp], edi
  3353.   002d8    89 75 d4     mov     DWORD PTR _iCurVertexOffset$[ebp], esi
  3354.   002db    0f 82 6e ff ff
  3355.     ff         jb     $L57162
  3356. $L56608:
  3357.  
  3358. ; 524  :     }
  3359. ; 525  : 
  3360. ; 526  :     // should be even, otherwise the adjacency info is definitely incorrect
  3361. ; 527  :     GXASSERT((cConnections & 1) == 0);
  3362. ; 528  :     cPointsMax = cConnections * 2;
  3363.  
  3364.   002e1    8b 4d dc     mov     ecx, DWORD PTR _cConnections$[ebp]
  3365.   002e4    03 c9         add     ecx, ecx
  3366.  
  3367. ; 529  : 
  3368. ; 530  :     // UNDONE UNDONE, need to handle large line lists
  3369. ; 531  :     //if (cConnections >= UNUSED16)
  3370. ; 532  :       //  goto e_Exit;
  3371. ; 533  : 
  3372. ; 534  :     if (cPointsMax == 0)
  3373.  
  3374.   002e6    0f 84 17 02 00
  3375.     00         je     $L57161
  3376.  
  3377. ; 535  :         goto e_Exit;
  3378. ; 536  : 
  3379. ; 537  :     hr = pDevice->CreateVertexBuffer(m_cfvf.m_cBytesPerVertex * cPointsMax, 
  3380. ; 538  :                         D3DUSAGE_WRITEONLY|(m_bHWVertexShaders ? 0:D3DUSAGE_SOFTWAREPROCESSING), 
  3381. ; 539  :                         m_cfvf.m_dwFVF, D3DPOOL_MANAGED, &m_pVertexBuffer, NULL);
  3382.  
  3383.   002ec    8b 7b 48     mov     edi, DWORD PTR [ebx+72]
  3384.   002ef    8b 45 cc     mov     eax, DWORD PTR _pDevice$[ebp]
  3385.   002f2    8b 10         mov     edx, DWORD PTR [eax]
  3386.   002f4    6a 00         push     0
  3387.   002f6    f7 df         neg     edi
  3388.   002f8    1b ff         sbb     edi, edi
  3389.   002fa    8d 73 4c     lea     esi, DWORD PTR [ebx+76]
  3390.   002fd    56         push     esi
  3391.   002fe    6a 01         push     1
  3392.   00300    ff 33         push     DWORD PTR [ebx]
  3393.   00302    83 e7 f0     and     edi, -16        ; fffffff0H
  3394.   00305    83 c7 10     add     edi, 16            ; 00000010H
  3395.   00308    83 cf 08     or     edi, 8
  3396.   0030b    57         push     edi
  3397.   0030c    8b 7b 04     mov     edi, DWORD PTR [ebx+4]
  3398.   0030f    0f af f9     imul     edi, ecx
  3399.   00312    57         push     edi
  3400.   00313    50         push     eax
  3401.   00314    ff 52 68     call     DWORD PTR [edx+104]
  3402.  
  3403. ; 540  :     if (FAILED(hr))
  3404.  
  3405.   00317    85 c0         test     eax, eax
  3406.   00319    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  3407.   0031c    0f 8c e1 01 00
  3408.     00         jl     $L57161
  3409.  
  3410. ; 541  :         goto e_Exit;
  3411. ; 542  : 
  3412. ; 543  :     m_pVertexBuffer->Lock(0, 0, (PVOID*)&pvLinePoints, 0);
  3413.  
  3414.   00322    8b 36         mov     esi, DWORD PTR [esi]
  3415.   00324    8b 06         mov     eax, DWORD PTR [esi]
  3416.   00326    33 ff         xor     edi, edi
  3417.   00328    57         push     edi
  3418.   00329    8d 4d f0     lea     ecx, DWORD PTR _pvLinePoints$[ebp]
  3419.   0032c    51         push     ecx
  3420.   0032d    57         push     edi
  3421.   0032e    57         push     edi
  3422.   0032f    56         push     esi
  3423.   00330    ff 50 2c     call     DWORD PTR [eax+44]
  3424.  
  3425. ; 544  : 
  3426. ; 545  :     hr = ptmMesh->GetVertexBuffer(&pVBVertices);
  3427.  
  3428.   00333    8b 45 08     mov     eax, DWORD PTR _ptmMesh$[ebp]
  3429.   00336    8b 08         mov     ecx, DWORD PTR [eax]
  3430.   00338    8d 55 d0     lea     edx, DWORD PTR _pVBVertices$[ebp]
  3431.   0033b    52         push     edx
  3432.   0033c    50         push     eax
  3433.   0033d    ff 51 34     call     DWORD PTR [ecx+52]
  3434.  
  3435. ; 546  :     if (FAILED(hr))
  3436.  
  3437.   00340    3b c7         cmp     eax, edi
  3438.   00342    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  3439.   00345    0f 8c b8 01 00
  3440.     00         jl     $L57161
  3441.  
  3442. ; 547  :         goto e_Exit;
  3443. ; 548  : 
  3444. ; 549  :     hr = pVBVertices->Lock(0,0, (PVOID*)&pvMeshPoints, D3DLOCK_NOSYSLOCK );
  3445.  
  3446.   0034b    8b 45 d0     mov     eax, DWORD PTR _pVBVertices$[ebp]
  3447.   0034e    8b 08         mov     ecx, DWORD PTR [eax]
  3448.   00350    68 00 08 00 00     push     2048            ; 00000800H
  3449.   00355    8d 55 f4     lea     edx, DWORD PTR _pvMeshPoints$[ebp]
  3450.   00358    52         push     edx
  3451.   00359    57         push     edi
  3452.   0035a    57         push     edi
  3453.   0035b    50         push     eax
  3454.   0035c    ff 51 2c     call     DWORD PTR [ecx+44]
  3455.  
  3456. ; 550  :     if (FAILED(hr))
  3457.  
  3458.   0035f    85 c0         test     eax, eax
  3459.   00361    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  3460.   00364    0f 8c 99 01 00
  3461.     00         jl     $L57161
  3462.  
  3463. ; 551  :         goto e_Exit;
  3464. ; 552  : 
  3465. ; 553  :     iCurPoint = 0;
  3466.  
  3467.   0036a    33 c0         xor     eax, eax
  3468.  
  3469. ; 554  :     iline = 0;
  3470. ; 555  :     for (iae = 0; iae < m_caeAttributeTable; iae++)
  3471.  
  3472.   0036c    39 43 58     cmp     DWORD PTR [ebx+88], eax
  3473.   0036f    89 45 fc     mov     DWORD PTR _iCurPoint$[ebp], eax
  3474.   00372    89 45 e8     mov     DWORD PTR _iae$[ebp], eax
  3475.   00375    0f 86 17 01 00
  3476.     00         jbe     $L56632
  3477.   0037b    8b 55 e4     mov     edx, DWORD PTR _rgaeAttributeTableMesh$[ebp]
  3478.   0037e    83 c2 04     add     edx, 4
  3479.   00381    89 55 d4     mov     DWORD PTR tv1276[ebp], edx
  3480. $L56630:
  3481.  
  3482. ; 556  :     {
  3483. ; 557  :         iFaceEnd = rgaeAttributeTableMesh[iae].FaceStart + rgaeAttributeTableMesh[iae].FaceCount;
  3484.  
  3485.   00384    8b 02         mov     eax, DWORD PTR [edx]
  3486.   00386    8b 4a 04     mov     ecx, DWORD PTR [edx+4]
  3487.   00389    03 c8         add     ecx, eax
  3488.  
  3489. ; 558  :         for (iFace = rgaeAttributeTableMesh[iae].FaceStart; iFace < iFaceEnd; iFace++)
  3490.  
  3491.   0038b    3b c1         cmp     eax, ecx
  3492.   0038d    89 4d d8     mov     DWORD PTR _iFaceEnd$[ebp], ecx
  3493.   00390    89 45 dc     mov     DWORD PTR _iFace$[ebp], eax
  3494.   00393    0f 83 e4 00 00
  3495.     00         jae     $L56631
  3496.   00399    8d 3c 40     lea     edi, DWORD PTR [eax+eax*2]
  3497.   0039c    c1 e7 02     shl     edi, 2
  3498. $L57164:
  3499.  
  3500. ; 559  :         {
  3501. ; 560  :             pdwNeighbor = &rgdwNeighbors[iFace * 3];
  3502.  
  3503.   0039f    8b 45 0c     mov     eax, DWORD PTR _rgdwNeighbors$[ebp]
  3504.   003a2    03 c7         add     eax, edi
  3505.   003a4    89 45 c8     mov     DWORD PTR _pdwNeighbor$[ebp], eax
  3506.  
  3507. ; 561  :             pdwFaceCur = &rgdwFaces[iFace * 3];
  3508.  
  3509.   003a7    8b 45 e0     mov     eax, DWORD PTR _rgdwFaces$[ebp]
  3510.   003aa    8d 34 07     lea     esi, DWORD PTR [edi+eax]
  3511.  
  3512. ; 562  :             if (pdwFaceCur[0] == UNUSED32)
  3513.  
  3514.   003ad    83 3e ff     cmp     DWORD PTR [esi], -1
  3515.   003b0    0f 84 c4 00 00
  3516.     00         je     $L57166
  3517.  
  3518. ; 563  :                 break;
  3519. ; 564  : 
  3520. ; 565  :             for (iPoint = 0; iPoint < 3; iPoint++)
  3521.  
  3522.   003b6    83 65 08 00     and     DWORD PTR _iPoint$[ebp], 0
  3523. $L57165:
  3524.  
  3525. ; 566  :             {
  3526. ; 567  :                 if (pdwNeighbor[iPoint] != UNUSED32)
  3527.  
  3528.   003ba    8b 45 c8     mov     eax, DWORD PTR _pdwNeighbor$[ebp]
  3529.   003bd    8b 4d 08     mov     ecx, DWORD PTR _iPoint$[ebp]
  3530.   003c0    83 3c 88 ff     cmp     DWORD PTR [eax+ecx*4], -1
  3531.   003c4    0f 84 91 00 00
  3532.     00         je     $L56638
  3533.  
  3534. ; 568  :                 {
  3535. ; 569  :                     if (m_bIndexSkinning)
  3536.  
  3537.   003ca    83 7b 44 00     cmp     DWORD PTR [ebx+68], 0
  3538.  
  3539. ; 570  :                     {
  3540. ; 571  :                         AppendPointIndexSkinned(cdMesh, pdwFaceCur, iPoint, pvMeshPoints, pvLinePoints, iCurPoint);
  3541.  
  3542.   003ce    8d 45 fc     lea     eax, DWORD PTR _iCurPoint$[ebp]
  3543.   003d1    50         push     eax
  3544.   003d2    ff 75 f0     push     DWORD PTR _pvLinePoints$[ebp]
  3545.   003d5    8b cb         mov     ecx, ebx
  3546.   003d7    ff 75 f4     push     DWORD PTR _pvMeshPoints$[ebp]
  3547.   003da    8d 85 00 ff ff
  3548.     ff         lea     eax, DWORD PTR _cdMesh$[ebp]
  3549.   003e0    74 28         je     SHORT $L56641
  3550.   003e2    ff 75 08     push     DWORD PTR _iPoint$[ebp]
  3551.   003e5    56         push     esi
  3552.   003e6    50         push     eax
  3553.   003e7    e8 00 00 00 00     call     ?AppendPointIndexSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z ; CAdjacencyOutline::AppendPointIndexSkinned
  3554.  
  3555. ; 572  : 
  3556. ; 573  :                         AppendMidpointIndexSkinned(cdMesh, pdwFaceCur, iPoint, pvMeshPoints, pvLinePoints, iCurPoint);
  3557.  
  3558.   003ec    8d 45 fc     lea     eax, DWORD PTR _iCurPoint$[ebp]
  3559.   003ef    50         push     eax
  3560.   003f0    ff 75 f0     push     DWORD PTR _pvLinePoints$[ebp]
  3561.   003f3    8d 85 00 ff ff
  3562.     ff         lea     eax, DWORD PTR _cdMesh$[ebp]
  3563.   003f9    ff 75 f4     push     DWORD PTR _pvMeshPoints$[ebp]
  3564.   003fc    8b cb         mov     ecx, ebx
  3565.   003fe    ff 75 08     push     DWORD PTR _iPoint$[ebp]
  3566.   00401    56         push     esi
  3567.   00402    50         push     eax
  3568.   00403    e8 00 00 00 00     call     ?AppendMidpointIndexSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z ; CAdjacencyOutline::AppendMidpointIndexSkinned
  3569.  
  3570. ; 574  :                     }
  3571. ; 575  :                     else if (m_bSkinning)
  3572.  
  3573.   00408    eb 51         jmp     SHORT $L56638
  3574. $L56641:
  3575.   0040a    83 7b 40 00     cmp     DWORD PTR [ebx+64], 0
  3576.   0040e    74 28         je     SHORT $L56643
  3577.  
  3578. ; 576  :                     {
  3579. ; 577  :                         AppendPointSkinned(cdMesh, pdwFaceCur, iPoint, pvMeshPoints, pvLinePoints, iCurPoint);
  3580.  
  3581.   00410    ff 75 08     push     DWORD PTR _iPoint$[ebp]
  3582.   00413    56         push     esi
  3583.   00414    50         push     eax
  3584.   00415    e8 00 00 00 00     call     ?AppendPointSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z ; CAdjacencyOutline::AppendPointSkinned
  3585.  
  3586. ; 578  : 
  3587. ; 579  :                         AppendMidpointSkinned(cdMesh, pdwFaceCur, iPoint, pvMeshPoints, pvLinePoints, iCurPoint);
  3588.  
  3589.   0041a    8d 45 fc     lea     eax, DWORD PTR _iCurPoint$[ebp]
  3590.   0041d    50         push     eax
  3591.   0041e    ff 75 f0     push     DWORD PTR _pvLinePoints$[ebp]
  3592.   00421    8d 85 00 ff ff
  3593.     ff         lea     eax, DWORD PTR _cdMesh$[ebp]
  3594.   00427    ff 75 f4     push     DWORD PTR _pvMeshPoints$[ebp]
  3595.   0042a    8b cb         mov     ecx, ebx
  3596.   0042c    ff 75 08     push     DWORD PTR _iPoint$[ebp]
  3597.   0042f    56         push     esi
  3598.   00430    50         push     eax
  3599.   00431    e8 00 00 00 00     call     ?AppendMidpointSkinned@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z ; CAdjacencyOutline::AppendMidpointSkinned
  3600.  
  3601. ; 580  :                     }
  3602. ; 581  :                     else
  3603.  
  3604.   00436    eb 23         jmp     SHORT $L56638
  3605. $L56643:
  3606.  
  3607. ; 582  :                     {
  3608. ; 583  :                         AppendPoint(cdMesh, pdwFaceCur, pvMeshPoints, pvLinePoints, iCurPoint);
  3609.  
  3610.   00438    56         push     esi
  3611.   00439    50         push     eax
  3612.   0043a    e8 00 00 00 00     call     ?AppendPoint@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIPAE2AAI@Z ; CAdjacencyOutline::AppendPoint
  3613.  
  3614. ; 584  : 
  3615. ; 585  :                         AppendMidpoint(cdMesh, pdwFaceCur, iPoint, pvMeshPoints, pvLinePoints, iCurPoint);
  3616.  
  3617.   0043f    8d 45 fc     lea     eax, DWORD PTR _iCurPoint$[ebp]
  3618.   00442    50         push     eax
  3619.   00443    ff 75 f0     push     DWORD PTR _pvLinePoints$[ebp]
  3620.   00446    8d 85 00 ff ff
  3621.     ff         lea     eax, DWORD PTR _cdMesh$[ebp]
  3622.   0044c    ff 75 f4     push     DWORD PTR _pvMeshPoints$[ebp]
  3623.   0044f    8b cb         mov     ecx, ebx
  3624.   00451    ff 75 08     push     DWORD PTR _iPoint$[ebp]
  3625.   00454    56         push     esi
  3626.   00455    50         push     eax
  3627.   00456    e8 00 00 00 00     call     ?AppendMidpoint@CAdjacencyOutline@@AAEXAAVCD3DXCrackDecl1@@PAIIPAE2AAI@Z ; CAdjacencyOutline::AppendMidpoint
  3628. $L56638:
  3629.   0045b    ff 45 08     inc     DWORD PTR _iPoint$[ebp]
  3630.   0045e    83 7d 08 03     cmp     DWORD PTR _iPoint$[ebp], 3
  3631.   00462    0f 82 52 ff ff
  3632.     ff         jb     $L57165
  3633.   00468    ff 45 dc     inc     DWORD PTR _iFace$[ebp]
  3634.   0046b    8b 45 dc     mov     eax, DWORD PTR _iFace$[ebp]
  3635.   0046e    83 c7 0c     add     edi, 12            ; 0000000cH
  3636.   00471    3b 45 d8     cmp     eax, DWORD PTR _iFaceEnd$[ebp]
  3637.   00474    0f 82 25 ff ff
  3638.     ff         jb     $L57164
  3639. $L57166:
  3640.  
  3641. ; 558  :         for (iFace = rgaeAttributeTableMesh[iae].FaceStart; iFace < iFaceEnd; iFace++)
  3642.  
  3643.   0047a    8b 55 d4     mov     edx, DWORD PTR tv1276[ebp]
  3644. $L56631:
  3645.  
  3646. ; 554  :     iline = 0;
  3647. ; 555  :     for (iae = 0; iae < m_caeAttributeTable; iae++)
  3648.  
  3649.   0047d    ff 45 e8     inc     DWORD PTR _iae$[ebp]
  3650.   00480    8b 45 e8     mov     eax, DWORD PTR _iae$[ebp]
  3651.   00483    83 c2 14     add     edx, 20            ; 00000014H
  3652.   00486    3b 43 58     cmp     eax, DWORD PTR [ebx+88]
  3653.   00489    89 55 d4     mov     DWORD PTR tv1276[ebp], edx
  3654.   0048c    0f 82 f2 fe ff
  3655.     ff         jb     $L56630
  3656. $L56632:
  3657.  
  3658. ; 586  :                     }
  3659. ; 587  : 
  3660. ; 588  :                     iline += 1;
  3661. ; 589  :                 }
  3662. ; 590  :             }
  3663. ; 591  :         }
  3664. ; 592  :     }
  3665. ; 593  : 
  3666. ; 594  :     // create a vertex declaration, so that we can have D3DCOLOR instead of UBYTE4 for the matrix indices 
  3667. ; 595  :     hr = D3DXDeclaratorFromFVF(m_cfvf.m_dwFVF, pDecl);
  3668.  
  3669.   00492    8d 85 b8 fc ff
  3670.     ff         lea     eax, DWORD PTR _pDecl$[ebp]
  3671.   00498    50         push     eax
  3672.   00499    ff 33         push     DWORD PTR [ebx]
  3673.   0049b    e8 00 00 00 00     call     _D3DXDeclaratorFromFVF@8
  3674.  
  3675. ; 596  :     if (FAILED(hr))
  3676.  
  3677.   004a0    85 c0         test     eax, eax
  3678.   004a2    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  3679.   004a5    7c 5c         jl     SHORT $L57161
  3680.  
  3681. ; 601  :     while (pDeclCur->Stream != 0xff)
  3682.  
  3683.   004a7    66 81 bd b8 fc
  3684.     ff ff ff 00     cmp     WORD PTR _pDecl$[ebp], 255 ; 000000ffH
  3685.   004b0    74 1f         je     SHORT $L56653
  3686.  
  3687. ; 597  :         goto e_Exit;
  3688. ; 598  : 
  3689. ; 599  :     // swap the type of any blendilndices to D3DCOLOR
  3690. ; 600  :     pDeclCur = pDecl;
  3691.  
  3692.   004b2    8d 85 bc fc ff
  3693.     ff         lea     eax, DWORD PTR _pDecl$[ebp+4]
  3694. $L56649:
  3695.  
  3696. ; 602  :     {
  3697. ; 603  :         if ((pDeclCur->Usage == D3DDECLUSAGE_BLENDINDICES) || (pDeclCur->Type == D3DDECLTYPE_FLOAT1))
  3698.  
  3699.   004b8    80 78 02 02     cmp     BYTE PTR [eax+2], 2
  3700.   004bc    74 05         je     SHORT $L56652
  3701.   004be    80 38 00     cmp     BYTE PTR [eax], 0
  3702.   004c1    75 03         jne     SHORT $L56651
  3703. $L56652:
  3704.  
  3705. ; 604  :         {
  3706. ; 605  :             //pDeclCur->Type = D3DDECLTYPE_UBYTE4;
  3707. ; 606  :             pDeclCur->Type = D3DDECLTYPE_D3DCOLOR;
  3708.  
  3709.   004c3    c6 00 04     mov     BYTE PTR [eax], 4
  3710. $L56651:
  3711.  
  3712. ; 607  :         }
  3713. ; 608  :         pDeclCur++;
  3714.  
  3715.   004c6    83 c0 08     add     eax, 8
  3716.   004c9    66 81 78 fc ff
  3717.     00         cmp     WORD PTR [eax-4], 255    ; 000000ffH
  3718.   004cf    75 e7         jne     SHORT $L56649
  3719. $L56653:
  3720.  
  3721. ; 609  :     }
  3722. ; 610  : 
  3723. ; 611  :     GXRELEASE(m_pDecl);
  3724.  
  3725.   004d1    8d 73 50     lea     esi, DWORD PTR [ebx+80]
  3726.   004d4    8b 06         mov     eax, DWORD PTR [esi]
  3727.   004d6    85 c0         test     eax, eax
  3728.   004d8    74 09         je     SHORT $L56654
  3729.   004da    8b 08         mov     ecx, DWORD PTR [eax]
  3730.   004dc    50         push     eax
  3731.   004dd    ff 51 08     call     DWORD PTR [ecx+8]
  3732.   004e0    83 26 00     and     DWORD PTR [esi], 0
  3733. $L56654:
  3734.  
  3735. ; 612  :     hr = pDevice->CreateVertexDeclaration(pDecl, &m_pDecl);
  3736.  
  3737.   004e3    8b 45 cc     mov     eax, DWORD PTR _pDevice$[ebp]
  3738.   004e6    8b 08         mov     ecx, DWORD PTR [eax]
  3739.   004e8    56         push     esi
  3740.   004e9    8d 95 b8 fc ff
  3741.     ff         lea     edx, DWORD PTR _pDecl$[ebp]
  3742.   004ef    52         push     edx
  3743.   004f0    50         push     eax
  3744.   004f1    ff 91 58 01 00
  3745.     00         call     DWORD PTR [ecx+344]
  3746.   004f7    89 45 fc     mov     DWORD PTR _hr$[ebp], eax
  3747.  
  3748. ; 613  :     if (FAILED(hr))
  3749. ; 614  :         goto e_Exit;
  3750. ; 615  : 
  3751. ; 616  : 
  3752. ; 617  : e_Exit:
  3753.  
  3754.   004fa    eb 07         jmp     SHORT $L57161
  3755. $L56574:
  3756.  
  3757. ; 442  :     {
  3758. ; 443  :         hr = E_OUTOFMEMORY;
  3759.  
  3760.   004fc    c7 45 fc 0e 00
  3761.     07 80         mov     DWORD PTR _hr$[ebp], -2147024882 ; 8007000eH
  3762. $L57161:
  3763.   00503    33 ff         xor     edi, edi
  3764. $e_Exit$56555:
  3765.  
  3766. ; 618  :     if (pvLinePoints != NULL)
  3767.  
  3768.   00505    39 7d f0     cmp     DWORD PTR _pvLinePoints$[ebp], edi
  3769.   00508    74 09         je     SHORT $L56660
  3770.  
  3771. ; 619  :     {
  3772. ; 620  :         m_pVertexBuffer->Unlock();
  3773.  
  3774.   0050a    8b 5b 4c     mov     ebx, DWORD PTR [ebx+76]
  3775.   0050d    8b 03         mov     eax, DWORD PTR [ebx]
  3776.   0050f    53         push     ebx
  3777.   00510    ff 50 30     call     DWORD PTR [eax+48]
  3778. $L56660:
  3779.  
  3780. ; 621  :     }
  3781. ; 622  : 
  3782. ; 623  :     // if a 16 bit mesh, then rgdwFaces is a temporary array
  3783. ; 624  :     if (b16BitMesh)
  3784.  
  3785.   00513    80 7d fb 00     cmp     BYTE PTR _b16BitMesh$[ebp], 0
  3786.   00517    74 0e         je     SHORT $L56661
  3787.  
  3788. ; 625  :     {
  3789. ; 626  :         delete []rgdwFaces;
  3790.  
  3791.   00519    ff 75 e0     push     DWORD PTR _rgdwFaces$[ebp]
  3792.   0051c    e8 00 00 00 00     call     ??3@YAXPAX@Z        ; operator delete
  3793.  
  3794. ; 627  : 
  3795. ; 628  :         if (rgwFaces != NULL)
  3796.  
  3797.   00521    39 7d c4     cmp     DWORD PTR _rgwFaces$[ebp], edi
  3798.   00524    59         pop     ecx
  3799.  
  3800. ; 629  :         {
  3801. ; 630  :             pibFaces->Unlock();
  3802. ; 631  :         }
  3803. ; 632  :     }
  3804. ; 633  :     else
  3805.  
  3806.   00525    eb 03         jmp     SHORT $L57168
  3807. $L56661:
  3808.  
  3809. ; 634  :     {
  3810. ; 635  :         if (rgdwFaces != NULL)
  3811.  
  3812.   00527    39 7d e0     cmp     DWORD PTR _rgdwFaces$[ebp], edi
  3813. $L57168:
  3814.   0052a    74 09         je     SHORT $L56666
  3815.  
  3816. ; 636  :         {
  3817. ; 637  :             pibFaces->Unlock();
  3818.  
  3819.   0052c    8b 45 ec     mov     eax, DWORD PTR _pibFaces$[ebp]
  3820.   0052f    8b 08         mov     ecx, DWORD PTR [eax]
  3821.   00531    50         push     eax
  3822.   00532    ff 51 30     call     DWORD PTR [ecx+48]
  3823. $L56666:
  3824.  
  3825. ; 638  :         }
  3826. ; 639  :     }
  3827. ; 640  :     GXRELEASE(pibFaces);
  3828.  
  3829.   00535    8b 45 ec     mov     eax, DWORD PTR _pibFaces$[ebp]
  3830.   00538    3b c7         cmp     eax, edi
  3831.   0053a    74 09         je     SHORT $L56667
  3832.   0053c    8b 08         mov     ecx, DWORD PTR [eax]
  3833.   0053e    50         push     eax
  3834.   0053f    ff 51 08     call     DWORD PTR [ecx+8]
  3835.   00542    89 7d ec     mov     DWORD PTR _pibFaces$[ebp], edi
  3836. $L56667:
  3837.  
  3838. ; 641  : 
  3839. ; 642  :     if (pvMeshPoints)
  3840.  
  3841.   00545    39 7d f4     cmp     DWORD PTR _pvMeshPoints$[ebp], edi
  3842.   00548    74 09         je     SHORT $L56672
  3843.  
  3844. ; 643  :     {
  3845. ; 644  :         GXASSERT(pVBVertices != NULL);
  3846. ; 645  :         pVBVertices->Unlock();
  3847.  
  3848.   0054a    8b 45 d0     mov     eax, DWORD PTR _pVBVertices$[ebp]
  3849.   0054d    8b 08         mov     ecx, DWORD PTR [eax]
  3850.   0054f    50         push     eax
  3851.   00550    ff 51 30     call     DWORD PTR [ecx+48]
  3852. $L56672:
  3853.  
  3854. ; 646  :     }
  3855. ; 647  :     GXRELEASE(pVBVertices);
  3856.  
  3857.   00553    8b 45 d0     mov     eax, DWORD PTR _pVBVertices$[ebp]
  3858.   00556    3b c7         cmp     eax, edi
  3859.   00558    74 09         je     SHORT $L56673
  3860.   0055a    8b 08         mov     ecx, DWORD PTR [eax]
  3861.   0055c    50         push     eax
  3862.   0055d    ff 51 08     call     DWORD PTR [ecx+8]
  3863.   00560    89 7d d0     mov     DWORD PTR _pVBVertices$[ebp], edi
  3864. $L56673:
  3865.  
  3866. ; 648  : 
  3867. ; 649  :     delete []rgaeAttributeTableMesh;
  3868.  
  3869.   00563    ff 75 e4     push     DWORD PTR _rgaeAttributeTableMesh$[ebp]
  3870.   00566    e8 00 00 00 00     call     ??3@YAXPAX@Z        ; operator delete
  3871.  
  3872. ; 650  : 
  3873. ; 651  :     return hr;
  3874.  
  3875.   0056b    8b 45 fc     mov     eax, DWORD PTR _hr$[ebp]
  3876.   0056e    59         pop     ecx
  3877.   0056f    5f         pop     edi
  3878.   00570    5e         pop     esi
  3879.   00571    5b         pop     ebx
  3880.  
  3881. ; 652  : }
  3882.  
  3883.   00572    c9         leave
  3884.   00573    c2 08 00     ret     8
  3885. ?Init@CAdjacencyOutline@@QAEJPAUID3DXBaseMesh@@PAK@Z ENDP ; CAdjacencyOutline::Init
  3886. _TEXT    ENDS
  3887. PUBLIC    ??_C@_04BEMIBDAE@mTot?$AA@            ; `string'
  3888. PUBLIC    ??_C@_07HHMNENJH@mWorlds?$AA@            ; `string'
  3889. PUBLIC    ??_C@_04JKCKMDGO@vClr?$AA@            ; `string'
  3890. PUBLIC    ?Draw@CAdjacencyOutline@@QAEJPAUIDirect3DDevice9@@KPAUID3DXEffect@@1KPAUD3DXMATRIX@@K@Z ; CAdjacencyOutline::Draw
  3891. EXTRN    _D3DXMatrixMultiply@12:NEAR
  3892. ;    COMDAT ??_C@_04BEMIBDAE@mTot?$AA@
  3893. ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.inl
  3894. CONST    SEGMENT
  3895. ??_C@_04BEMIBDAE@mTot?$AA@ DB 'mTot', 00H        ; `string'
  3896. CONST    ENDS
  3897. ;    COMDAT ??_C@_07HHMNENJH@mWorlds?$AA@
  3898. CONST    SEGMENT
  3899. ??_C@_07HHMNENJH@mWorlds?$AA@ DB 'mWorlds', 00H        ; `string'
  3900. CONST    ENDS
  3901. ;    COMDAT ??_C@_04JKCKMDGO@vClr?$AA@
  3902. CONST    SEGMENT
  3903. ??_C@_04JKCKMDGO@vClr?$AA@ DB 'vClr', 00H        ; `string'
  3904. ; Function compile flags: /Ogs
  3905. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\adjoutline.cpp
  3906. CONST    ENDS
  3907. ;    COMDAT ?Draw@CAdjacencyOutline@@QAEJPAUIDirect3DDevice9@@KPAUID3DXEffect@@1KPAUD3DXMATRIX@@K@Z
  3908. _TEXT    SEGMENT
  3909. _matTot$ = -280                        ; size = 64
  3910. _matProj$ = -216                    ; size = 64
  3911. _matView$ = -152                    ; size = 64
  3912. _matWorld$ = -88                    ; size = 64
  3913. _vClr$ = -24                        ; size = 16
  3914. _dwSoftwareMode$ = -8                    ; size = 4
  3915. _bChangedSWMode$ = -4                    ; size = 4
  3916. tv681 = 8                        ; size = 4
  3917. tv532 = 8                        ; size = 4
  3918. _pDevice$ = 8                        ; size = 4
  3919. _iAttrib$ = 12                        ; size = 4
  3920. _pfxCurrent$ = 16                    ; size = 4
  3921. _pfxSkinnedAdjacency$ = 16                ; size = 4
  3922. _cPasses$ = 20                        ; size = 4
  3923. _pfxColor$ = 20                        ; size = 4
  3924. tv648 = 24                        ; size = 4
  3925. tv647 = 24                        ; size = 4
  3926. tv646 = 24                        ; size = 4
  3927. tv645 = 24                        ; size = 4
  3928. tv472 = 24                        ; size = 4
  3929. _iVertexStart$ = 24                    ; size = 4
  3930. _iMatrix$ = 24                        ; size = 4
  3931. _dwColor$ = 24                        ; size = 4
  3932. _cLinesCur$ = 28                    ; size = 4
  3933. _rgmIndexedMatrices$ = 28                ; size = 4
  3934. _iPass$ = 32                        ; size = 4
  3935. _cIndexedMatrices$ = 32                    ; size = 4
  3936. ?Draw@CAdjacencyOutline@@QAEJPAUIDirect3DDevice9@@KPAUID3DXEffect@@1KPAUD3DXMATRIX@@K@Z PROC NEAR ; CAdjacencyOutline::Draw, COMDAT
  3937. ; _this$ = ecx
  3938.  
  3939. ; 823  : }
  3940.  
  3941.   00000    8b ff         npad     2
  3942.  
  3943. ; 673  : {
  3944.  
  3945.   00002    55         push     ebp
  3946.   00003    8b ec         mov     ebp, esp
  3947.   00005    81 ec 18 01 00
  3948.     00         sub     esp, 280        ; 00000118H
  3949.  
  3950. ; 674  :     HRESULT hr;
  3951. ; 675  :     LPD3DXEFFECT pfxCurrent;
  3952. ; 676  :     DWORD dwFVF;
  3953. ; 677  :     UINT iPass;
  3954. ; 678  :     UINT cPasses;
  3955. ; 679  :     DWORD cBytesPerVertex;
  3956. ; 680  :     D3DXMATRIX matWorld;
  3957. ; 681  :     D3DXMATRIX matView;
  3958. ; 682  :     D3DXMATRIX matProj;
  3959. ; 683  :     D3DXMATRIX matTot;
  3960. ; 684  :     D3DXCOLOR vClr(dwColor);
  3961.  
  3962.   0000b    8b 45 18     mov     eax, DWORD PTR _dwColor$[ebp]
  3963.   0000e    d9 05 00 00 00
  3964.     00         fld     DWORD PTR __real@3b808081
  3965.   00014    53         push     ebx
  3966.   00015    8b d9         mov     ebx, ecx
  3967.   00017    8b c8         mov     ecx, eax
  3968.   00019    c1 e9 10     shr     ecx, 16            ; 00000010H
  3969.   0001c    0f b6 c9     movzx     ecx, cl
  3970.   0001f    89 4d 18     mov     DWORD PTR tv648[ebp], ecx
  3971.   00022    8b c8         mov     ecx, eax
  3972.   00024    c1 e9 08     shr     ecx, 8
  3973.   00027    db 45 18     fild     DWORD PTR tv648[ebp]
  3974.   0002a    0f b6 c9     movzx     ecx, cl
  3975.   0002d    d8 c9         fmul     ST(0), ST(1)
  3976.   0002f    89 4d 18     mov     DWORD PTR tv647[ebp], ecx
  3977.   00032    0f b6 c8     movzx     ecx, al
  3978.   00035    d9 5d e8     fstp     DWORD PTR _vClr$[ebp]
  3979.   00038    db 45 18     fild     DWORD PTR tv647[ebp]
  3980.   0003b    89 4d 18     mov     DWORD PTR tv646[ebp], ecx
  3981.   0003e    c1 e8 18     shr     eax, 24            ; 00000018H
  3982.   00041    56         push     esi
  3983.   00042    d8 c9         fmul     ST(0), ST(1)
  3984.  
  3985. ; 685  :     DWORD cLines;
  3986. ; 686  :     DWORD cLinesCur;
  3987. ; 687  :     DWORD iVertexStart;
  3988. ; 688  :     BOOL  dwSoftwareMode;
  3989. ; 689  :     BOOL bChangedSWMode = FALSE;
  3990. ; 690  :     DWORD iMatrix;
  3991. ; 691  :     DWORD iSubset;
  3992. ; 692  : 
  3993. ; 693  :     if (m_bSkinning)
  3994.  
  3995.   00044    8b 75 08     mov     esi, DWORD PTR _pDevice$[ebp]
  3996.   00047    57         push     edi
  3997.   00048    d9 5d ec     fstp     DWORD PTR _vClr$[ebp+4]
  3998.   0004b    db 45 18     fild     DWORD PTR tv646[ebp]
  3999.   0004e    89 45 18     mov     DWORD PTR tv645[ebp], eax
  4000.   00051    33 c0         xor     eax, eax
  4001.   00053    39 43 40     cmp     DWORD PTR [ebx+64], eax
  4002.   00056    d8 c9         fmul     ST(0), ST(1)
  4003.   00058    89 45 fc     mov     DWORD PTR _bChangedSWMode$[ebp], eax
  4004.   0005b    d9 5d f0     fstp     DWORD PTR _vClr$[ebp+8]
  4005.   0005e    db 45 18     fild     DWORD PTR tv645[ebp]
  4006.   00061    d8 c9         fmul     ST(0), ST(1)
  4007.   00063    d9 5d f4     fstp     DWORD PTR _vClr$[ebp+12]
  4008.   00066    dd d8         fstp     ST(0)
  4009.   00068    0f 84 1a 02 00
  4010.     00         je     $L56734
  4011.  
  4012. ; 694  :     {
  4013. ; 695  :         if (!m_bIndexSkinning)
  4014. ; 696  :         {
  4015. ; 697  :             // non-indexed skinning setup
  4016. ; 698  :             pfxCurrent = pfxSkinnedAdjacency;
  4017.  
  4018.   0006e    8b 7d 10     mov     edi, DWORD PTR _pfxSkinnedAdjacency$[ebp]
  4019.   00071    39 43 44     cmp     DWORD PTR [ebx+68], eax
  4020.  
  4021. ; 699  :             pfxSkinnedAdjacency->SetTechnique(pfxSkinnedAdjacency->GetTechnique(0));
  4022.  
  4023.   00074    8b 07         mov     eax, DWORD PTR [edi]
  4024.   00076    89 7d 10     mov     DWORD PTR _pfxCurrent$[ebp], edi
  4025.   00079    89 45 18     mov     DWORD PTR tv472[ebp], eax
  4026.   0007c    0f 85 0b 01 00
  4027.     00         jne     $L56735
  4028.   00082    6a 00         push     0
  4029.   00084    57         push     edi
  4030.   00085    ff 50 30     call     DWORD PTR [eax+48]
  4031.   00088    50         push     eax
  4032.   00089    8b 45 18     mov     eax, DWORD PTR tv472[ebp]
  4033.   0008c    57         push     edi
  4034.   0008d    ff 90 f0 00 00
  4035.     00         call     DWORD PTR [eax+240]
  4036.  
  4037. ; 700  : 
  4038. ; 701  :             pDevice->GetTransform(D3DTS_VIEW,&matView);
  4039.  
  4040.   00093    8b 06         mov     eax, DWORD PTR [esi]
  4041.   00095    8d 8d 68 ff ff
  4042.     ff         lea     ecx, DWORD PTR _matView$[ebp]
  4043.   0009b    51         push     ecx
  4044.   0009c    6a 02         push     2
  4045.   0009e    56         push     esi
  4046.   0009f    ff 90 b4 00 00
  4047.     00         call     DWORD PTR [eax+180]
  4048.  
  4049. ; 702  :             pDevice->GetTransform(D3DTS_PROJECTION,&matProj);
  4050.  
  4051.   000a5    8b 06         mov     eax, DWORD PTR [esi]
  4052.   000a7    8d 8d 28 ff ff
  4053.     ff         lea     ecx, DWORD PTR _matProj$[ebp]
  4054.   000ad    51         push     ecx
  4055.   000ae    6a 03         push     3
  4056.   000b0    56         push     esi
  4057.   000b1    ff 90 b4 00 00
  4058.     00         call     DWORD PTR [eax+180]
  4059.  
  4060. ; 703  :             pDevice->GetTransform(D3DTS_WORLD,&matWorld);
  4061.  
  4062.   000b7    8b 06         mov     eax, DWORD PTR [esi]
  4063.   000b9    8d 4d a8     lea     ecx, DWORD PTR _matWorld$[ebp]
  4064.   000bc    51         push     ecx
  4065.   000bd    68 00 01 00 00     push     256            ; 00000100H
  4066.   000c2    56         push     esi
  4067.   000c3    ff 90 b4 00 00
  4068.     00         call     DWORD PTR [eax+180]
  4069.  
  4070. ; 704  : 
  4071. ; 705  :             D3DXMatrixMultiply(&matTot,&matView,&matProj);
  4072.  
  4073.   000c9    8d 85 28 ff ff
  4074.     ff         lea     eax, DWORD PTR _matProj$[ebp]
  4075.   000cf    50         push     eax
  4076.   000d0    8d 85 68 ff ff
  4077.     ff         lea     eax, DWORD PTR _matView$[ebp]
  4078.   000d6    50         push     eax
  4079.   000d7    8d 85 e8 fe ff
  4080.     ff         lea     eax, DWORD PTR _matTot$[ebp]
  4081.   000dd    50         push     eax
  4082.   000de    e8 00 00 00 00     call     _D3DXMatrixMultiply@12
  4083.  
  4084. ; 706  :             pfxSkinnedAdjacency->SetMatrix("mTot", &matTot);                       
  4085.  
  4086.   000e3    8b 07         mov     eax, DWORD PTR [edi]
  4087.   000e5    8d 8d e8 fe ff
  4088.     ff         lea     ecx, DWORD PTR _matTot$[ebp]
  4089.   000eb    51         push     ecx
  4090.   000ec    68 00 00 00 00     push     OFFSET FLAT:??_C@_04BEMIBDAE@mTot?$AA@
  4091.   000f1    57         push     edi
  4092.   000f2    ff 90 98 00 00
  4093.     00         call     DWORD PTR [eax+152]
  4094.  
  4095. ; 707  : 
  4096. ; 708  :             pDevice->GetTransform(D3DTS_WORLD,&matWorld);
  4097.  
  4098.   000f8    8b 06         mov     eax, DWORD PTR [esi]
  4099.   000fa    8d 4d a8     lea     ecx, DWORD PTR _matWorld$[ebp]
  4100.   000fd    51         push     ecx
  4101.   000fe    68 00 01 00 00     push     256            ; 00000100H
  4102.   00103    56         push     esi
  4103.   00104    ff 90 b4 00 00
  4104.     00         call     DWORD PTR [eax+180]
  4105.  
  4106. ; 709  :             pfxSkinnedAdjacency->SetMatrix("mWd1", &matWorld);                       
  4107.  
  4108.   0010a    8b 07         mov     eax, DWORD PTR [edi]
  4109.   0010c    8d 4d a8     lea     ecx, DWORD PTR _matWorld$[ebp]
  4110.   0010f    51         push     ecx
  4111.   00110    68 00 00 00 00     push     OFFSET FLAT:??_C@_04IHCGOIEL@mWd1?$AA@
  4112.   00115    57         push     edi
  4113.   00116    ff 90 98 00 00
  4114.     00         call     DWORD PTR [eax+152]
  4115.  
  4116. ; 710  : 
  4117. ; 711  :             pDevice->GetTransform(D3DTS_WORLD1,&matWorld);
  4118.  
  4119.   0011c    8b 06         mov     eax, DWORD PTR [esi]
  4120.   0011e    8d 4d a8     lea     ecx, DWORD PTR _matWorld$[ebp]
  4121.   00121    51         push     ecx
  4122.   00122    68 01 01 00 00     push     257            ; 00000101H
  4123.   00127    56         push     esi
  4124.   00128    ff 90 b4 00 00
  4125.     00         call     DWORD PTR [eax+180]
  4126.  
  4127. ; 712  :             pfxSkinnedAdjacency->SetMatrix("mWd2", &matWorld);                       
  4128.  
  4129.   0012e    8b 07         mov     eax, DWORD PTR [edi]
  4130.   00130    8d 4d a8     lea     ecx, DWORD PTR _matWorld$[ebp]
  4131.   00133    51         push     ecx
  4132.   00134    68 00 00 00 00     push     OFFSET FLAT:??_C@_04KMALLLII@mWd2?$AA@
  4133.   00139    57         push     edi
  4134.   0013a    ff 90 98 00 00
  4135.     00         call     DWORD PTR [eax+152]
  4136.  
  4137. ; 713  : 
  4138. ; 714  :             pDevice->GetTransform(D3DTS_WORLD2,&matWorld);
  4139.  
  4140.   00140    8b 06         mov     eax, DWORD PTR [esi]
  4141.   00142    8d 4d a8     lea     ecx, DWORD PTR _matWorld$[ebp]
  4142.   00145    51         push     ecx
  4143.   00146    68 02 01 00 00     push     258            ; 00000102H
  4144.   0014b    56         push     esi
  4145.   0014c    ff 90 b4 00 00
  4146.     00         call     DWORD PTR [eax+180]
  4147.  
  4148. ; 715  :             pfxSkinnedAdjacency->SetMatrix("mWd3", &matWorld);                       
  4149.  
  4150.   00152    8b 07         mov     eax, DWORD PTR [edi]
  4151.   00154    8d 4d a8     lea     ecx, DWORD PTR _matWorld$[ebp]
  4152.   00157    51         push     ecx
  4153.   00158    68 00 00 00 00     push     OFFSET FLAT:??_C@_04LFBAIKMJ@mWd3?$AA@
  4154.   0015d    57         push     edi
  4155.   0015e    ff 90 98 00 00
  4156.     00         call     DWORD PTR [eax+152]
  4157.  
  4158. ; 716  : 
  4159. ; 717  :             pDevice->GetTransform(D3DTS_WORLD3,&matWorld);
  4160.  
  4161.   00164    8b 06         mov     eax, DWORD PTR [esi]
  4162.   00166    8d 4d a8     lea     ecx, DWORD PTR _matWorld$[ebp]
  4163.   00169    51         push     ecx
  4164.   0016a    68 03 01 00 00     push     259            ; 00000103H
  4165.   0016f    56         push     esi
  4166.   00170    ff 90 b4 00 00
  4167.     00         call     DWORD PTR [eax+180]
  4168.  
  4169. ; 718  :             pfxSkinnedAdjacency->SetMatrix("mWd4", &matWorld);        
  4170.  
  4171.   00176    8b 07         mov     eax, DWORD PTR [edi]
  4172.   00178    8d 4d a8     lea     ecx, DWORD PTR _matWorld$[ebp]
  4173.   0017b    51         push     ecx
  4174.   0017c    68 00 00 00 00     push     OFFSET FLAT:??_C@_04PKFBBMAO@mWd4?$AA@
  4175.   00181    57         push     edi
  4176.   00182    ff 90 98 00 00
  4177.     00         call     DWORD PTR [eax+152]
  4178.  
  4179. ; 719  :         }        
  4180. ; 720  :         else  // indexed skinning setup
  4181.  
  4182.   00188    e9 ad 00 00 00     jmp     $L56742
  4183. $L56735:
  4184.  
  4185. ; 721  :         {
  4186. ; 722  :             pfxCurrent = pfxSkinnedAdjacency;
  4187. ; 723  :             pfxSkinnedAdjacency->SetTechnique(pfxSkinnedAdjacency->GetTechnique(1));
  4188.  
  4189.   0018d    6a 01         push     1
  4190.   0018f    57         push     edi
  4191.   00190    ff 50 30     call     DWORD PTR [eax+48]
  4192.   00193    50         push     eax
  4193.   00194    8b 45 18     mov     eax, DWORD PTR tv472[ebp]
  4194.   00197    57         push     edi
  4195.   00198    ff 90 f0 00 00
  4196.     00         call     DWORD PTR [eax+240]
  4197.  
  4198. ; 724  : 
  4199. ; 725  :             pDevice->GetTransform(D3DTS_VIEW,&matView);
  4200.  
  4201.   0019e    8b 06         mov     eax, DWORD PTR [esi]
  4202.   001a0    8d 8d 68 ff ff
  4203.     ff         lea     ecx, DWORD PTR _matView$[ebp]
  4204.   001a6    51         push     ecx
  4205.   001a7    6a 02         push     2
  4206.   001a9    56         push     esi
  4207.   001aa    ff 90 b4 00 00
  4208.     00         call     DWORD PTR [eax+180]
  4209.  
  4210. ; 726  :             pDevice->GetTransform(D3DTS_PROJECTION,&matProj);
  4211.  
  4212.   001b0    8b 06         mov     eax, DWORD PTR [esi]
  4213.   001b2    8d 8d 28 ff ff
  4214.     ff         lea     ecx, DWORD PTR _matProj$[ebp]
  4215.   001b8    51         push     ecx
  4216.   001b9    6a 03         push     3
  4217.   001bb    56         push     esi
  4218.   001bc    ff 90 b4 00 00
  4219.     00         call     DWORD PTR [eax+180]
  4220.  
  4221. ; 727  : 
  4222. ; 728  :             D3DXMatrixMultiply(&matTot,&matView,&matProj);
  4223.  
  4224.   001c2    8d 85 28 ff ff
  4225.     ff         lea     eax, DWORD PTR _matProj$[ebp]
  4226.   001c8    50         push     eax
  4227.   001c9    8d 85 68 ff ff
  4228.     ff         lea     eax, DWORD PTR _matView$[ebp]
  4229.   001cf    50         push     eax
  4230.   001d0    8d 85 e8 fe ff
  4231.     ff         lea     eax, DWORD PTR _matTot$[ebp]
  4232.   001d6    50         push     eax
  4233.   001d7    e8 00 00 00 00     call     _D3DXMatrixMultiply@12
  4234.  
  4235. ; 729  :             pfxSkinnedAdjacency->SetMatrix("mTot", &matTot);                       
  4236.  
  4237.   001dc    8b 07         mov     eax, DWORD PTR [edi]
  4238.   001de    8d 8d e8 fe ff
  4239.     ff         lea     ecx, DWORD PTR _matTot$[ebp]
  4240.   001e4    51         push     ecx
  4241.   001e5    68 00 00 00 00     push     OFFSET FLAT:??_C@_04BEMIBDAE@mTot?$AA@
  4242.   001ea    57         push     edi
  4243.   001eb    ff 90 98 00 00
  4244.     00         call     DWORD PTR [eax+152]
  4245.  
  4246. ; 730  : 
  4247. ; 731  :             for (iMatrix = 0; iMatrix < cIndexedMatrices; iMatrix++)
  4248.  
  4249.   001f1    83 65 18 00     and     DWORD PTR _iMatrix$[ebp], 0
  4250.   001f5    83 7d 20 00     cmp     DWORD PTR _cIndexedMatrices$[ebp], 0
  4251.   001f9    76 2b         jbe     SHORT $L56745
  4252.   001fb    8b 45 1c     mov     eax, DWORD PTR _rgmIndexedMatrices$[ebp]
  4253.   001fe    89 45 08     mov     DWORD PTR tv681[ebp], eax
  4254. $L57198:
  4255.  
  4256. ; 732  :             {
  4257. ; 733  :                 pfxSkinnedAdjacency->SetMatrix(x_rgszMatrix[iMatrix], &rgmIndexedMatrices[iMatrix]);
  4258.  
  4259.   00201    ff 75 08     push     DWORD PTR tv681[ebp]
  4260.   00204    8b 4d 18     mov     ecx, DWORD PTR _iMatrix$[ebp]
  4261.   00207    ff 34 8d 00 00
  4262.     00 00         push     DWORD PTR _x_rgszMatrix[ecx*4]
  4263.   0020e    8b 07         mov     eax, DWORD PTR [edi]
  4264.   00210    57         push     edi
  4265.   00211    ff 90 98 00 00
  4266.     00         call     DWORD PTR [eax+152]
  4267.   00217    ff 45 18     inc     DWORD PTR _iMatrix$[ebp]
  4268.   0021a    8b 45 18     mov     eax, DWORD PTR _iMatrix$[ebp]
  4269.   0021d    83 45 08 40     add     DWORD PTR tv681[ebp], 64 ; 00000040H
  4270.   00221    3b 45 20     cmp     eax, DWORD PTR _cIndexedMatrices$[ebp]
  4271.   00224    72 db         jb     SHORT $L57198
  4272. $L56745:
  4273.  
  4274. ; 734  :             }
  4275. ; 735  : 
  4276. ; 736  :             pfxSkinnedAdjacency->SetMatrixArray("mWorlds", rgmIndexedMatrices, cIndexedMatrices);
  4277.  
  4278.   00226    ff 75 20     push     DWORD PTR _cIndexedMatrices$[ebp]
  4279.   00229    8b 07         mov     eax, DWORD PTR [edi]
  4280.   0022b    ff 75 1c     push     DWORD PTR _rgmIndexedMatrices$[ebp]
  4281.   0022e    68 00 00 00 00     push     OFFSET FLAT:??_C@_07HHMNENJH@mWorlds?$AA@
  4282.   00233    57         push     edi
  4283.   00234    ff 90 a0 00 00
  4284.     00         call     DWORD PTR [eax+160]
  4285. $L56742:
  4286.  
  4287. ; 737  :         }
  4288. ; 738  : 
  4289. ; 739  :         pfxSkinnedAdjacency->SetVector("vClr", (D3DXVECTOR4*)&vClr);                       
  4290.  
  4291.   0023a    8b 07         mov     eax, DWORD PTR [edi]
  4292.   0023c    8d 4d e8     lea     ecx, DWORD PTR _vClr$[ebp]
  4293.   0023f    51         push     ecx
  4294.   00240    68 00 00 00 00     push     OFFSET FLAT:??_C@_04JKCKMDGO@vClr?$AA@
  4295.   00245    57         push     edi
  4296.   00246    ff 90 88 00 00
  4297.     00         call     DWORD PTR [eax+136]
  4298.  
  4299. ; 740  : 
  4300. ; 741  :         dwSoftwareMode = pDevice->GetSoftwareVertexProcessing();
  4301.  
  4302.   0024c    8b 06         mov     eax, DWORD PTR [esi]
  4303.   0024e    56         push     esi
  4304.   0024f    ff 90 38 01 00
  4305.     00         call     DWORD PTR [eax+312]
  4306.  
  4307. ; 742  :         if (!m_bHWVertexShaders)
  4308.  
  4309.   00255    83 7b 48 00     cmp     DWORD PTR [ebx+72], 0
  4310.   00259    89 45 f8     mov     DWORD PTR _dwSoftwareMode$[ebp], eax
  4311.   0025c    75 12         jne     SHORT $L56749
  4312.  
  4313. ; 743  :         {
  4314. ; 744  :             bChangedSWMode = TRUE;
  4315. ; 745  :             pDevice->SetSoftwareVertexProcessing(TRUE);
  4316.  
  4317.   0025e    8b 0e         mov     ecx, DWORD PTR [esi]
  4318.   00260    33 c0         xor     eax, eax
  4319.   00262    40         inc     eax
  4320.   00263    50         push     eax
  4321.   00264    56         push     esi
  4322.   00265    89 45 fc     mov     DWORD PTR _bChangedSWMode$[ebp], eax
  4323.   00268    ff 91 34 01 00
  4324.     00         call     DWORD PTR [ecx+308]
  4325.  
  4326. ; 746  :         }
  4327. ; 747  :         // if in the wrong mode, then switch
  4328. ; 748  :         else if (dwSoftwareMode && m_bHWVertexShaders)
  4329.  
  4330.   0026e    eb 30         jmp     SHORT $L57199
  4331. $L56749:
  4332.   00270    85 c0         test     eax, eax
  4333.   00272    74 2c         je     SHORT $L57199
  4334.  
  4335. ; 749  :         {
  4336. ; 750  :             bChangedSWMode = TRUE;
  4337. ; 751  :             pDevice->SetSoftwareVertexProcessing(FALSE);
  4338.  
  4339.   00274    8b 06         mov     eax, DWORD PTR [esi]
  4340.   00276    6a 00         push     0
  4341.   00278    56         push     esi
  4342.   00279    c7 45 fc 01 00
  4343.     00 00         mov     DWORD PTR _bChangedSWMode$[ebp], 1
  4344.   00280    ff 90 34 01 00
  4345.     00         call     DWORD PTR [eax+308]
  4346.  
  4347. ; 752  :         }
  4348. ; 753  :     }
  4349. ; 754  :     else
  4350.  
  4351.   00286    eb 18         jmp     SHORT $L57199
  4352. $L56734:
  4353.  
  4354. ; 755  :     {
  4355. ; 756  :         pfxCurrent = pfxColor;
  4356.  
  4357.   00288    8b 45 14     mov     eax, DWORD PTR _pfxColor$[ebp]
  4358.  
  4359. ; 757  :         pfxCurrent->SetVector("vClr", (D3DXVECTOR4*)&vClr);                       
  4360.  
  4361.   0028b    8b 08         mov     ecx, DWORD PTR [eax]
  4362.   0028d    8d 55 e8     lea     edx, DWORD PTR _vClr$[ebp]
  4363.   00290    52         push     edx
  4364.   00291    68 00 00 00 00     push     OFFSET FLAT:??_C@_04JKCKMDGO@vClr?$AA@
  4365.   00296    50         push     eax
  4366.   00297    89 45 10     mov     DWORD PTR _pfxCurrent$[ebp], eax
  4367.   0029a    ff 91 88 00 00
  4368.     00         call     DWORD PTR [ecx+136]
  4369. $L57199:
  4370.  
  4371. ; 758  :     }
  4372. ; 759  : 
  4373. ; 760  : 
  4374. ; 761  :     if ((iAttrib < m_caeAttributeTable) && (m_rgaeAttributeTable[iAttrib].AttribId == iAttrib))
  4375.  
  4376.   002a0    8b 7b 58     mov     edi, DWORD PTR [ebx+88]
  4377.   002a3    8b 4d 0c     mov     ecx, DWORD PTR _iAttrib$[ebp]
  4378.   002a6    3b cf         cmp     ecx, edi
  4379.   002a8    73 0f         jae     SHORT $L56754
  4380.   002aa    8b 53 54     mov     edx, DWORD PTR [ebx+84]
  4381.   002ad    8d 04 89     lea     eax, DWORD PTR [ecx+ecx*4]
  4382.   002b0    39 0c 82     cmp     DWORD PTR [edx+eax*4], ecx
  4383.   002b3    75 04         jne     SHORT $L56754
  4384.  
  4385. ; 762  :     {
  4386. ; 763  :         iSubset = iAttrib;
  4387.  
  4388.   002b5    8b c1         mov     eax, ecx
  4389.  
  4390. ; 764  :     }
  4391. ; 765  :     else
  4392.  
  4393.   002b7    eb 15         jmp     SHORT $L57204
  4394. $L56754:
  4395.  
  4396. ; 766  :     {
  4397. ; 767  :         // look for the correct attribute table entry to draw
  4398. ; 768  :         for (iSubset = 0; iSubset < m_caeAttributeTable; iSubset++)
  4399.  
  4400.   002b9    33 c0         xor     eax, eax
  4401.   002bb    85 ff         test     edi, edi
  4402.   002bd    76 0f         jbe     SHORT $L57204
  4403.   002bf    8b 53 54     mov     edx, DWORD PTR [ebx+84]
  4404. $L57203:
  4405.  
  4406. ; 769  :         {
  4407. ; 770  :             if (m_rgaeAttributeTable[iSubset].AttribId == iAttrib)
  4408.  
  4409.   002c2    39 0a         cmp     DWORD PTR [edx], ecx
  4410.   002c4    74 08         je     SHORT $L57204
  4411.   002c6    40         inc     eax
  4412.   002c7    83 c2 14     add     edx, 20            ; 00000014H
  4413.   002ca    3b c7         cmp     eax, edi
  4414.   002cc    72 f4         jb     SHORT $L57203
  4415. $L57204:
  4416.  
  4417. ; 771  :             {
  4418. ; 772  :                 break;
  4419. ; 773  :             }
  4420. ; 774  :         }
  4421. ; 775  :     }
  4422. ; 776  : 
  4423. ; 777  :     if (iSubset < m_caeAttributeTable)
  4424.  
  4425.   002ce    3b c7         cmp     eax, edi
  4426.   002d0    0f 83 d4 00 00
  4427.     00         jae     $L57202
  4428.  
  4429. ; 778  :     {
  4430. ; 779  :         if (m_rgaeAttributeTable[iSubset].FaceCount > 0)
  4431.  
  4432.   002d6    8d 3c 80     lea     edi, DWORD PTR [eax+eax*4]
  4433.   002d9    8b 43 54     mov     eax, DWORD PTR [ebx+84]
  4434.   002dc    c1 e7 02     shl     edi, 2
  4435.   002df    83 7c 07 08 00     cmp     DWORD PTR [edi+eax+8], 0
  4436.   002e4    89 7d 08     mov     DWORD PTR tv532[ebp], edi
  4437.   002e7    0f 86 bd 00 00
  4438.     00         jbe     $L57202
  4439.  
  4440. ; 780  :         {
  4441. ; 781  :             pfxCurrent->Begin(&cPasses, 0);
  4442.  
  4443.   002ed    8b 45 10     mov     eax, DWORD PTR _pfxCurrent$[ebp]
  4444.   002f0    8b 08         mov     ecx, DWORD PTR [eax]
  4445.   002f2    6a 00         push     0
  4446.   002f4    8d 55 14     lea     edx, DWORD PTR _cPasses$[ebp]
  4447.   002f7    52         push     edx
  4448.   002f8    50         push     eax
  4449.   002f9    ff 91 04 01 00
  4450.     00         call     DWORD PTR [ecx+260]
  4451.  
  4452. ; 782  : 
  4453. ; 783  :             for (iPass = 0; iPass < cPasses; iPass++)
  4454.  
  4455.   002ff    83 65 20 00     and     DWORD PTR _iPass$[ebp], 0
  4456.   00303    83 7d 14 00     cmp     DWORD PTR _cPasses$[ebp], 0
  4457.   00307    0f 86 91 00 00
  4458.     00         jbe     $L56764
  4459.   0030d    eb 03         jmp     SHORT $L56762
  4460. $L57200:
  4461.   0030f    8b 7d 08     mov     edi, DWORD PTR tv532[ebp]
  4462. $L56762:
  4463.  
  4464. ; 784  :             {
  4465. ; 785  :                 pDevice->SetVertexDeclaration(m_pDecl);
  4466.  
  4467.   00312    ff 73 50     push     DWORD PTR [ebx+80]
  4468.   00315    8b 06         mov     eax, DWORD PTR [esi]
  4469.   00317    56         push     esi
  4470.   00318    ff 90 5c 01 00
  4471.     00         call     DWORD PTR [eax+348]
  4472.  
  4473. ; 786  : 
  4474. ; 787  :                 pfxCurrent->BeginPass(iPass);
  4475.  
  4476.   0031e    8b 45 10     mov     eax, DWORD PTR _pfxCurrent$[ebp]
  4477.   00321    ff 75 20     push     DWORD PTR _iPass$[ebp]
  4478.   00324    8b 08         mov     ecx, DWORD PTR [eax]
  4479.   00326    50         push     eax
  4480.   00327    ff 91 08 01 00
  4481.     00         call     DWORD PTR [ecx+264]
  4482.  
  4483. ; 788  : 
  4484. ; 789  :                 pDevice->SetStreamSource(0, m_pVertexBuffer, 0, m_cfvf.m_cBytesPerVertex);
  4485.  
  4486.   0032d    ff 73 04     push     DWORD PTR [ebx+4]
  4487.   00330    8b 06         mov     eax, DWORD PTR [esi]
  4488.   00332    6a 00         push     0
  4489.   00334    ff 73 4c     push     DWORD PTR [ebx+76]
  4490.   00337    6a 00         push     0
  4491.   00339    56         push     esi
  4492.   0033a    ff 90 90 01 00
  4493.     00         call     DWORD PTR [eax+400]
  4494.  
  4495. ; 790  : 
  4496. ; 791  :                 iVertexStart = m_rgaeAttributeTable[iSubset].VertexStart;
  4497.  
  4498.   00340    8b 43 54     mov     eax, DWORD PTR [ebx+84]
  4499.   00343    03 c7         add     eax, edi
  4500.  
  4501. ; 792  :                 cLines = m_rgaeAttributeTable[iSubset].VertexCount / 2;
  4502.  
  4503.   00345    8b 78 10     mov     edi, DWORD PTR [eax+16]
  4504.   00348    8b 48 0c     mov     ecx, DWORD PTR [eax+12]
  4505.   0034b    d1 ef         shr     edi, 1
  4506.   0034d    eb 2f         jmp     SHORT $L57205
  4507. $L56766:
  4508.  
  4509. ; 795  :                 {
  4510. ; 796  :                     cLinesCur = min(cLines, (0xffff / 2));
  4511.  
  4512.   0034f    b8 ff 7f 00 00     mov     eax, 32767        ; 00007fffH
  4513.   00354    3b f8         cmp     edi, eax
  4514.   00356    89 7d 1c     mov     DWORD PTR _cLinesCur$[ebp], edi
  4515.   00359    72 03         jb     SHORT $L57171
  4516.   0035b    89 45 1c     mov     DWORD PTR _cLinesCur$[ebp], eax
  4517. $L57171:
  4518.  
  4519. ; 797  : 
  4520. ; 798  :                     hr = pDevice->DrawPrimitive(D3DPT_LINELIST, 
  4521. ; 799  :                                                  iVertexStart, 
  4522. ; 800  :                                                  cLinesCur);
  4523.  
  4524.   0035e    ff 75 1c     push     DWORD PTR _cLinesCur$[ebp]
  4525.   00361    8b 06         mov     eax, DWORD PTR [esi]
  4526.   00363    ff 75 18     push     DWORD PTR _iVertexStart$[ebp]
  4527.   00366    6a 02         push     2
  4528.   00368    56         push     esi
  4529.   00369    ff 90 44 01 00
  4530.     00         call     DWORD PTR [eax+324]
  4531.  
  4532. ; 801  :                     if (FAILED(hr))
  4533.  
  4534.   0036f    85 c0         test     eax, eax
  4535.   00371    7c 4b         jl     SHORT $L56715
  4536.  
  4537. ; 802  :                         return hr;
  4538. ; 803  : 
  4539. ; 804  :                     iVertexStart += cLinesCur * 2;
  4540.  
  4541.   00373    8b 45 1c     mov     eax, DWORD PTR _cLinesCur$[ebp]
  4542.   00376    8b 4d 18     mov     ecx, DWORD PTR _iVertexStart$[ebp]
  4543.   00379    8d 0c 41     lea     ecx, DWORD PTR [ecx+eax*2]
  4544.  
  4545. ; 805  :                     cLines -= cLinesCur;
  4546.  
  4547.   0037c    2b f8         sub     edi, eax
  4548. $L57205:
  4549.  
  4550. ; 802  :                         return hr;
  4551. ; 803  : 
  4552. ; 804  :                     iVertexStart += cLinesCur * 2;
  4553.  
  4554.   0037e    89 4d 18     mov     DWORD PTR _iVertexStart$[ebp], ecx
  4555.  
  4556. ; 793  : 
  4557. ; 794  :                 while (cLines > 0)
  4558.  
  4559.   00381    75 cc         jne     SHORT $L56766
  4560.  
  4561. ; 806  :                 }
  4562. ; 807  :              
  4563. ; 808  :                 pfxCurrent->EndPass();
  4564.  
  4565.   00383    8b 45 10     mov     eax, DWORD PTR _pfxCurrent$[ebp]
  4566.   00386    8b 08         mov     ecx, DWORD PTR [eax]
  4567.   00388    50         push     eax
  4568.   00389    ff 91 10 01 00
  4569.     00         call     DWORD PTR [ecx+272]
  4570.   0038f    ff 45 20     inc     DWORD PTR _iPass$[ebp]
  4571.   00392    8b 45 20     mov     eax, DWORD PTR _iPass$[ebp]
  4572.   00395    3b 45 14     cmp     eax, DWORD PTR _cPasses$[ebp]
  4573.   00398    0f 82 71 ff ff
  4574.     ff         jb     $L57200
  4575. $L56764:
  4576.  
  4577. ; 809  :             }
  4578. ; 810  : 
  4579. ; 811  :             pfxCurrent->End();
  4580.  
  4581.   0039e    8b 45 10     mov     eax, DWORD PTR _pfxCurrent$[ebp]
  4582.   003a1    8b 08         mov     ecx, DWORD PTR [eax]
  4583.   003a3    50         push     eax
  4584.   003a4    ff 91 14 01 00
  4585.     00         call     DWORD PTR [ecx+276]
  4586. $L57202:
  4587.  
  4588. ; 812  : 
  4589. ; 813  : 
  4590. ; 814  :         }
  4591. ; 815  :     }
  4592. ; 816  : 
  4593. ; 817  :     if (bChangedSWMode)
  4594.  
  4595.   003aa    83 7d fc 00     cmp     DWORD PTR _bChangedSWMode$[ebp], 0
  4596.   003ae    74 0c         je     SHORT $L56770
  4597.  
  4598. ; 818  :     {
  4599. ; 819  :         pDevice->SetSoftwareVertexProcessing(dwSoftwareMode);
  4600.  
  4601.   003b0    ff 75 f8     push     DWORD PTR _dwSoftwareMode$[ebp]
  4602.   003b3    8b 06         mov     eax, DWORD PTR [esi]
  4603.   003b5    56         push     esi
  4604.   003b6    ff 90 34 01 00
  4605.     00         call     DWORD PTR [eax+308]
  4606. $L56770:
  4607.  
  4608. ; 820  :     }
  4609. ; 821  : 
  4610. ; 822  :     return S_OK;
  4611.  
  4612.   003bc    33 c0         xor     eax, eax
  4613. $L56715:
  4614.   003be    5f         pop     edi
  4615.   003bf    5e         pop     esi
  4616.   003c0    5b         pop     ebx
  4617.  
  4618. ; 823  : }
  4619.  
  4620.   003c1    c9         leave
  4621.   003c2    c2 1c 00     ret     28            ; 0000001cH
  4622. ?Draw@CAdjacencyOutline@@QAEJPAUIDirect3DDevice9@@KPAUID3DXEffect@@1KPAUD3DXMATRIX@@K@Z ENDP ; CAdjacencyOutline::Draw
  4623. _TEXT    ENDS
  4624. END
  4625.